<!DOCTYPE html>
<html lang="en">
    <!-- title -->


    

<!-- keywords -->



<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
    <meta name="author" content="Zhang Shuo">
    <meta name="renderer" content="webkit">
    <meta name="copyright" content="Zhang Shuo">
    
        <meta name="keywords" content="hexo,hexo-theme,hexo-blog">
    
    <meta name="description" content="">
    <meta name="description" content="一文带你看遍 JDK9~15 的重要新特性！Java 8 新特性见这里：Java8 新特性最佳指南 。 你可以在 Archived OpenJDK General-Availability Releases 上下载自己需要的 JDK 版本！ 官方的新特性说明文档地址： https:&#x2F;&#x2F;openjdk.java.net&#x2F;projects&#x2F;jdk&#x2F; 。 Guide ：别人家的特性都用了几年了，我 Ja">
<meta property="og:type" content="article">
<meta property="og:title" content="交流Java学习心得">
<meta property="og:url" content="https://gitee.com/zhang-shuo-fr/hexo.git/2021/12/03/docs/java/new-features/java%E6%96%B0%E7%89%B9%E6%80%A7%E6%80%BB%E7%BB%93/index.html">
<meta property="og:site_name" content="交流Java学习心得">
<meta property="og:description" content="一文带你看遍 JDK9~15 的重要新特性！Java 8 新特性见这里：Java8 新特性最佳指南 。 你可以在 Archived OpenJDK General-Availability Releases 上下载自己需要的 JDK 版本！ 官方的新特性说明文档地址： https:&#x2F;&#x2F;openjdk.java.net&#x2F;projects&#x2F;jdk&#x2F; 。 Guide ：别人家的特性都用了几年了，我 Ja">
<meta property="og:locale" content="en_US">
<meta property="og:image" content="https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/java-guide-blog/module-structure.png">
<meta property="og:image" content="https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/java-guide-blog/image-20210816083417616.png">
<meta property="og:image" content="https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/java-guide-blog/image-20210816104614414.png">
<meta property="og:image" content="https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/java-guide-blog/image-20210816154125579.png">
<meta property="og:image" content="https://img-blog.csdnimg.cn/20210603202746605.png">
<meta property="og:image" content="https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/javaguide/image-20210820153955587.png">
<meta property="article:published_time" content="2021-12-03T07:29:23.574Z">
<meta property="article:modified_time" content="2021-11-29T06:15:08.000Z">
<meta property="article:author" content="Zhang Shuo">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/java-guide-blog/module-structure.png">
    <meta http-equiv="Cache-control" content="no-cache">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <link rel="icon" href="/hexo/assets/zs2.ico">
    
    <title>fi3ework&#39;s Studio</title>
    <!-- /*! loadCSS. [c]2017 Filament Group, Inc. MIT License */
/* This file is meant as a standalone workflow for
- testing support for link[rel=preload]
- enabling async CSS loading in browsers that do not support rel=preload
- applying rel preload css once loaded, whether supported or not.
*/ -->
<script>
    (function (w) {
        'use strict'
        // rel=preload support test
        if (!w.loadCSS) {
            w.loadCSS = function () {}
        }
        // define on the loadCSS obj
        var rp = (loadCSS.relpreload = {})
        // rel=preload feature support test
        // runs once and returns a function for compat purposes
        rp.support = (function () {
            var ret
            try {
                ret = w.document.createElement('link').relList.supports('preload')
            } catch (e) {
                ret = false
            }
            return function () {
                return ret
            }
        })()

        // if preload isn't supported, get an asynchronous load by using a non-matching media attribute
        // then change that media back to its intended value on load
        rp.bindMediaToggle = function (link) {
            // remember existing media attr for ultimate state, or default to 'all'
            var finalMedia = link.media || 'all'

            function enableStylesheet() {
                link.media = finalMedia
            }

            // bind load handlers to enable media
            if (link.addEventListener) {
                link.addEventListener('load', enableStylesheet)
            } else if (link.attachEvent) {
                link.attachEvent('onload', enableStylesheet)
            }

            // Set rel and non-applicable media type to start an async request
            // note: timeout allows this to happen async to let rendering continue in IE
            setTimeout(function () {
                link.rel = 'stylesheet'
                link.media = 'only x'
            })
            // also enable media after 3 seconds,
            // which will catch very old browsers (android 2.x, old firefox) that don't support onload on link
            setTimeout(enableStylesheet, 3000)
        }

        // loop through link elements in DOM
        rp.poly = function () {
            // double check this to prevent external calls from running
            if (rp.support()) {
                return
            }
            var links = w.document.getElementsByTagName('link')
            for (var i = 0; i < links.length; i++) {
                var link = links[i]
                // qualify links to those with rel=preload and as=style attrs
                if (
                    link.rel === 'preload' &&
                    link.getAttribute('as') === 'style' &&
                    !link.getAttribute('data-loadcss')
                ) {
                    // prevent rerunning on link
                    link.setAttribute('data-loadcss', true)
                    // bind listeners to toggle media back
                    rp.bindMediaToggle(link)
                }
            }
        }

        // if unsupported, run the polyfill
        if (!rp.support()) {
            // run once at least
            rp.poly()

            // rerun poly on an interval until onload
            var run = w.setInterval(rp.poly, 500)
            if (w.addEventListener) {
                w.addEventListener('load', function () {
                    rp.poly()
                    w.clearInterval(run)
                })
            } else if (w.attachEvent) {
                w.attachEvent('onload', function () {
                    rp.poly()
                    w.clearInterval(run)
                })
            }
        }

        // commonjs
        if (typeof exports !== 'undefined') {
            exports.loadCSS = loadCSS
        } else {
            w.loadCSS = loadCSS
        }
    })(typeof global !== 'undefined' ? global : this)
</script>

    <style type="text/css">
    @font-face {
        font-family: 'Oswald-Regular';
        src: url("/hexo/font/Oswald-Regular.ttf");
    }

    body {
        margin: 0;
    }

    header,
    footer,
    .back-top,
    .sidebar,
    .container,
    .site-intro-meta,
    .toc-wrapper {
        display: none;
    }

    .site-intro {
        position: relative;
        z-index: 3;
        width: 100%;
        /* height: 50vh; */
        overflow: hidden;
    }

    .site-intro-placeholder {
        position: absolute;
        z-index: -2;
        top: 0;
        left: 0;
        width: calc(100% + 300px);
        height: 100%;
        background: repeating-linear-gradient(-45deg, #444 0, #444 80px, #333 80px, #333 160px);
        background-position: center center;
        transform: translate3d(-226px, 0, 0);
        animation: gradient-move 2.5s ease-out 0s infinite;
    }

    @keyframes gradient-move {
        0% {
            transform: translate3d(-226px, 0, 0);
        }
        100% {
            transform: translate3d(0, 0, 0);
        }
    }
</style>

    <link rel="preload" href="/hexo/css/style.css?v=20210823" as="style" onload="this.onload=null;this.rel='stylesheet'">
    <link rel="preload" href="/hexo/css/dark.css?v=20210823" as="style">
    <link rel="stylesheet" href="/hexo/css/dark.css" media="(prefers-color-scheme: dark)">
    <link rel="stylesheet" href="/hexo/css/mobile.css?v=20210823" media="(max-width: 960px)">
    <link rel="preload" href="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
    <link rel="preload" href="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js" as="script">
    <link rel="preload" href="/hexo/scripts/main.js?v=20210823" as="script">
    <link rel="preload" href="/hexo/scripts/dark.js?v=20210823" as="script">
    <link rel="preload" href="/hexo/font/Oswald-Regular.ttf" as="font" crossorigin>
    <link rel="preload" href="https://at.alicdn.com/t/font_327081_1dta1rlogw17zaor.woff" as="font" crossorigin>
    <!-- algolia -->
    
    <!-- 百度统计  -->
    
    <!-- 谷歌统计  -->
    
<meta name="generator" content="Hexo 5.4.0"></head>

    <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
    <script type="text/javascript">
        if (typeof window.$ == undefined) {
            console.warn('jquery load from jsdelivr failed, will load local script')
            document.write('<script src="/hexo/lib/jquery.min.js" />')
        }
    </script>
    
        <body class="post-body">
    
        <!-- header -->
        <header class="header header-mobile">
    <!-- top read progress line -->
    <div class="header-element">
        <div class="read-progress"></div>
    </div>
    <!-- sidebar menu button -->
    <div class="header-element">
        
            <div class="header-sidebar-menu">
        
            
                <div style="padding-left: 1px;">&#xe775;</div>
            
        </div>
    </div>
    <!-- header actions -->
    <div class="header-actions">
        <!-- theme mode switch button -->
        <span class="header-theme-btn header-element">
            <i class="fas fa-adjust"></i>
        </span>
        <!-- back to home page text -->
        <span class="home-link header-element">
            <a href=/hexo/>ZhangShuo's Studio.</a>
        </span>
    </div>
    <!-- toggle banner for post layout -->
    
        
            <div class="banner">
        
            <div class="blog-title header-element">
                <a href="/hexo/">ZhangShuo&#39;s Studio.</a>
            </div>
            <div class="post-title header-element">
                <a href="#" class="post-name"></a>
            </div>
        </div>
    
</header>

        <!-- fixed footer -->
        <footer class="footer-fixed">
    <!-- back to top button -->
    <div class="footer-fixed-element">
        
            <div class="back-top back-top-hidden">
        
        
            <div>&#xe639;</div>
        
        </div>
    </div>
</footer>

        <!-- wrapper -->
        <div class="wrapper">
            <div class="site-intro" style="







    height:50vh;

">
    
    <!-- 主页  -->
    
        
    <!-- 404页  -->
            
    <div class="site-intro-placeholder"></div>
    <div class="site-intro-img" style="background-image: url(/hexo/intro/post-bg.jpg)"></div>
    <div class="site-intro-meta">
        <!-- 标题  -->
        <h1 class="intro-title">
            <!-- 主页  -->
            
                [Untitled Post]
            <!-- 404 -->
            
        </h1>
        <!-- 副标题 -->
        <p class="intro-subtitle">
            <!-- 主页副标题  -->
            
                
            <!-- 404 -->
            
        </p>
        <!-- 文章页 meta -->
        
            <div class="post-intros">
                <!-- 文章页标签  -->
                
                
                    <div class="post-intro-read">
                        <span>Word count: <span class="post-count word-count">8.7k</span>Reading time: <span class="post-count reading-time">36 min</span></span>
                    </div>
                
                <div class="post-intro-meta">
                    <!-- 撰写日期 -->
                    <span class="iconfont-archer post-intro-calander">&#xe676;</span>
                    <span class="post-intro-time">2021/12/03</span>
                    <!-- busuanzi -->
                    
                        <span id="busuanzi_container_page_pv" class="busuanzi-pv">
                            <span class="iconfont-archer post-intro-busuanzi">&#xe602;</span>
                            <span id="busuanzi_value_page_pv"></span>
                        </span>
                    
                    <!-- 文章分享 -->
                    <span class="share-wrapper">
                        <span class="iconfont-archer share-icon">&#xe71d;</span>
                        <span class="share-text">Share</span>
                        <ul class="share-list">
                            <li class="iconfont-archer share-qr" data-type="qr">&#xe75b;
                                <div class="share-qrcode"></div>
                            </li>
                            <li class="iconfont-archer" data-type="weibo">&#xe619;</li>
                            <li class="iconfont-archer" data-type="qzone">&#xe62e;</li>
                            <li class="iconfont-archer" data-type="twitter">&#xe634;</li>
                            <li class="iconfont-archer" data-type="facebook">&#xe67a;</li>
                        </ul>
                    </span>
                </div>
            </div>
        
    </div>
</div>

            <script>
  // get user agent
  function getBrowserVersions() {
    var u = window.navigator.userAgent
    return {
      userAgent: u,
      trident: u.indexOf('Trident') > -1, //IE内核
      presto: u.indexOf('Presto') > -1, //opera内核
      webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
      gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
      mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
      ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
      android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
      iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者安卓QQ浏览器
      iPad: u.indexOf('iPad') > -1, //是否为iPad
      webApp: u.indexOf('Safari') == -1, //是否为web应用程序，没有头部与底部
      weixin: u.indexOf('MicroMessenger') == -1, //是否为微信浏览器
      uc: u.indexOf('UCBrowser') > -1, //是否为android下的UC浏览器
    }
  }
  var browser = {
    versions: getBrowserVersions(),
  }
  console.log('userAgent: ' + browser.versions.userAgent)

  // callback
  function fontLoaded() {
    console.log('font loaded')
    if (document.getElementsByClassName('site-intro-meta')) {
      document
        .getElementsByClassName('intro-title')[0]
        .classList.add('intro-fade-in')
      document
        .getElementsByClassName('intro-subtitle')[0]
        .classList.add('intro-fade-in')
      var postIntros = document.getElementsByClassName('post-intros')[0]
      if (postIntros) {
        postIntros.classList.add('post-fade-in')
      }
    }
  }

  // UC不支持跨域，所以直接显示
  function asyncCb() {
    if (browser.versions.uc) {
      console.log('UCBrowser')
      fontLoaded()
    } else {
      WebFont.load({
        custom: {
          families: ['Oswald-Regular'],
        },
        loading: function () {
          // 所有字体开始加载
          // console.log('font loading');
        },
        active: function () {
          // 所有字体已渲染
          fontLoaded()
        },
        inactive: function () {
          // 字体预加载失败，无效字体或浏览器不支持加载
          console.log('inactive: timeout')
          fontLoaded()
        },
        timeout: 5000, // Set the timeout to two seconds
      })
    }
  }

  function asyncErr() {
    console.warn('script load from CDN failed, will load local script')
  }

  // load webfont-loader async, and add callback function
  function async(u, cb, err) {
    var d = document,
      t = 'script',
      o = d.createElement(t),
      s = d.getElementsByTagName(t)[0]
    o.src = u
    if (cb) {
      o.addEventListener(
        'load',
        function (e) {
          cb(null, e)
        },
        false
      )
    }
    if (err) {
      o.addEventListener(
        'error',
        function (e) {
          err(null, e)
        },
        false
      )
    }
    s.parentNode.insertBefore(o, s)
  }

  var asyncLoadWithFallBack = function (arr, success, reject) {
    var currReject = function () {
      reject()
      arr.shift()
      if (arr.length) async(arr[0], success, currReject)
    }

    async(arr[0], success, currReject)
  }

  asyncLoadWithFallBack(
    [
      'https://cdn.jsdelivr.net/npm/webfontloader@1.6.28/webfontloader.min.js',
      'https://cdn.bootcss.com/webfont/1.6.28/webfontloader.js',
      "/hexo/lib/webfontloader.min.js",
    ],
    asyncCb,
    asyncErr
  )
</script>

            <img class="loading" src="/hexo/assets/loading.svg" style="display: block; margin: 6rem auto 0 auto; width: 6rem; height: 6rem;" />
            <div class="container container-unloaded">
                <main class="main post-page">
    <article class="article-entry">
        <h1 id="一文带你看遍-JDK9-15-的重要新特性！"><a href="#一文带你看遍-JDK9-15-的重要新特性！" class="headerlink" title="一文带你看遍 JDK9~15 的重要新特性！"></a>一文带你看遍 JDK9~15 的重要新特性！</h1><p>Java 8 新特性见这里：<a target="_blank" rel="noopener" href="https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247484744&idx=1&sn=9db31dca13d327678845054af75efb74&chksm=cea24a83f9d5c3956f4feb9956b068624ab2fdd6c4a75fe52d5df5dca356a016577301399548&token=1082669959&lang=zh_CN&scene=21#wechat_redirect">Java8 新特性最佳指南</a> 。</p>
<p>你可以在 <a target="_blank" rel="noopener" href="http://jdk.java.net/archive/">Archived OpenJDK General-Availability Releases</a> 上下载自己需要的 JDK 版本！</p>
<p>官方的新特性说明文档地址： <a target="_blank" rel="noopener" href="https://openjdk.java.net/projects/jdk/">https://openjdk.java.net/projects/jdk/</a> 。</p>
<p><em>Guide ：别人家的特性都用了几年了，我 Java 才出来，哈哈！真实！</em></p>
<h2 id="Java9"><a href="#Java9" class="headerlink" title="Java9"></a>Java9</h2><p>发布于 2017 年 9 月 21 日 。作为 Java8 之后 3 年半才发布的新版本，Java 9 带 来了很多重大的变化其中最重要的改动是 Java 平台模块系统的引入，其他还有诸如集合、Stream 流</p>
<h3 id="Java-平台模块系统"><a href="#Java-平台模块系统" class="headerlink" title="Java 平台模块系统"></a>Java 平台模块系统</h3><p>Java 平台模块系统是<a target="_blank" rel="noopener" href="https://openjdk.java.net/projects/jigsaw/">Jigsaw Project</a>的一部分，把模块化开发实践引入到了 Java 平台中，可以让我们的代码可重用性更好！</p>
<p>什么是模块系统？官方的定义是：A uniquely named, reusable group of related packages, as well as resources (such as images and XML files) and a module descriptor.</p>
<p>简单来说，你可以将一个模块看作是一组唯一命名、可重用的包、资源和模块描述文件（module-info.java）。</p>
<p>任意一个 jar 文件，只要加上一个 模块描述文件（module-info.java），就可以升级为一个模块。</p>
<p><img src="https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/java-guide-blog/module-structure.png"></p>
<p>在引入了模块系统之后，JDK 被重新组织成 94 个模块。Java 应用可以通过新增的 jlink 工具，创建出只包含所依赖的 JDK 模块的自定义运行时镜像。这样可以极大的减少 Java 运行时环境的大小。</p>
<p>我们可以通过 exports 关键词精准控制哪些类可以对外开放使用，哪些类只能内部使用。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">module</span> my.<span class="keyword">module</span> &#123;</span><br><span class="line">    <span class="comment">//exports 公开指定包的所有公共成员</span></span><br><span class="line">    <span class="keyword">exports</span> com.my.<span class="keyword">package</span>.name;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">module</span> my.<span class="keyword">module</span> &#123;</span><br><span class="line">     <span class="comment">//exports…to 限制访问的成员范围</span></span><br><span class="line">    export com.my.<span class="keyword">package</span>.name to com.specific.<span class="keyword">package</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<p>Java 9 模块的重要特征是在其工件（artifact）的根目录中包含了一个描述模块的 <code>module-info.java</code> 文 件。 工件的格式可以是传统的 JAR 文件或是 Java 9 新增的 JMOD 文件。</p>
<p>想要深入了解 Java 9 的模块化，参见：</p>
<ul>
<li><a target="_blank" rel="noopener" href="https://openjdk.java.net/projects/jigsaw/quick-start">《Project Jigsaw: Module System Quick-Start Guide》</a></li>
<li><a target="_blank" rel="noopener" href="https://stacktraceguru.com/java9/module-introduction">《Java 9 Modules: part 1》</a></li>
</ul>
<h3 id="Jshell"><a href="#Jshell" class="headerlink" title="Jshell"></a>Jshell</h3><p>jshell 是 Java 9 新增的一个实用工具。为 Java 提供了类似于 Python 的实时命令行交互工具。</p>
<p>在 Jshell 中可以直接输入表达式并查看其执行结果。</p>
<p><img src="https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/java-guide-blog/image-20210816083417616.png"></p>
<h3 id="集合增强"><a href="#集合增强" class="headerlink" title="集合增强"></a>集合增强</h3><p>增加 了 <code>List.of()</code>、<code>Set.of()</code>、<code>Map.of()</code> 和 <code>Map.ofEntries()</code>等工厂方法来创建不可变集合（这部分内容有点参考 Guava 的味道）</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">List.of(<span class="string">&quot;Java&quot;</span>, <span class="string">&quot;C++&quot;</span>);</span><br><span class="line">Set.of(<span class="string">&quot;Java&quot;</span>, <span class="string">&quot;C++&quot;</span>);</span><br><span class="line">Map.of(<span class="string">&quot;Java&quot;</span>, <span class="number">1</span>, <span class="string">&quot;C++&quot;</span>, <span class="number">2</span>);</span><br></pre></td></tr></table></figure>

<p>使用 <code>of()</code> 创建的集合为不可变集合，不能进行添加、删除、替换、 排序等操作，不然会报 <code>java.lang.UnsupportedOperationException</code> 异常。</p>
<p><code>Collectors</code> 中增加了新的方法 <code>filtering()</code> 和 <code>flatMapping()</code>。</p>
<p><code>Collectors</code> 的 <code>filtering()</code> 方法类似于 <code>Stream</code> 类的 <code>filter()</code> 方法，都是用于过滤元素。</p>
<blockquote>
<p>Java 8 为 <code>Collectors</code> 类引入了 <code>groupingBy</code> 操作，用于根据特定的属性将对象分组。</p>
</blockquote>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">List&lt;String&gt; list = List.of(<span class="string">&quot;x&quot;</span>,<span class="string">&quot;www&quot;</span>, <span class="string">&quot;yy&quot;</span>, <span class="string">&quot;zz&quot;</span>);</span><br><span class="line">Map&lt;Integer, List&lt;String&gt;&gt; result = list.stream()</span><br><span class="line">        .collect(Collectors.groupingBy(String::length,</span><br><span class="line">                Collectors.filtering(s -&gt; !s.contains(<span class="string">&quot;z&quot;</span>),</span><br><span class="line">                        Collectors.toList())));</span><br><span class="line"></span><br><span class="line">System.out.println(result); <span class="comment">// &#123;1=[x], 2=[yy], 3=[www]&#125;</span></span><br></pre></td></tr></table></figure>

<h3 id="Stream-amp-Optional-增强"><a href="#Stream-amp-Optional-增强" class="headerlink" title="Stream &amp; Optional 增强"></a>Stream &amp; Optional 增强</h3><p><code>Stream</code> 中增加了新的方法 <code>ofNullable()</code>、<code>dropWhile()</code>、<code>takeWhile()</code> 以及 <code>iterate()</code> 方法的重载方法。</p>
<p>Java 9 中的 <code>ofNullable()</code> 方 法允许我们创建一个单元素的 <code>Stream</code>，可以包含一个非空元素，也可以创建一个空 <code>Stream</code>。 而在 Java 8 中则不可以创建空的 <code>Stream</code> 。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">Stream&lt;String&gt; stringStream = Stream.ofNullable(<span class="string">&quot;Java&quot;</span>);</span><br><span class="line">System.out.println(stringStream.count());<span class="comment">// 1</span></span><br><span class="line">Stream&lt;String&gt; nullStream = Stream.ofNullable(<span class="keyword">null</span>);</span><br><span class="line">System.out.println(nullStream.count());<span class="comment">//0</span></span><br></pre></td></tr></table></figure>

<p><code>takeWhile()</code> 方法可以从 <code>Stream</code> 中依次获取满足条件的元素，直到不满足条件为止结束获取。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">List&lt;Integer&gt; integerList = List.of(<span class="number">11</span>, <span class="number">33</span>, <span class="number">66</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">13</span>);</span><br><span class="line">integerList.stream().takeWhile(x -&gt; x &lt; <span class="number">50</span>).forEach(System.out::println);<span class="comment">// 11 33</span></span><br></pre></td></tr></table></figure>

<p><code>dropWhile()</code> 方法的效果和 <code>takeWhile()</code> 相反。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">List&lt;Integer&gt; integerList2 = List.of(<span class="number">11</span>, <span class="number">33</span>, <span class="number">66</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">13</span>);</span><br><span class="line">integerList2.stream().dropWhile(x -&gt; x &lt; <span class="number">50</span>).forEach(System.out::println);<span class="comment">// 66 8 9 13</span></span><br></pre></td></tr></table></figure>

<p><code>iterate()</code> 方法的新重载方法提供了一个 <code>Predicate</code> 参数 (判断条件)来决定什么时候结束迭代</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">static</span>&lt;T&gt; Stream&lt;T&gt; <span class="title">iterate</span><span class="params">(<span class="keyword">final</span> T seed, <span class="keyword">final</span> UnaryOperator&lt;T&gt; f)</span> </span>&#123;</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">// 新增加的重载方法</span></span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">static</span>&lt;T&gt; Stream&lt;T&gt; <span class="title">iterate</span><span class="params">(T seed, Predicate&lt;? <span class="keyword">super</span> T&gt; hasNext, UnaryOperator&lt;T&gt; next)</span> </span>&#123;</span><br><span class="line"></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<p>两者的使用对比如下，新的 <code>iterate()</code> 重载方法更加灵活一些。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 使用原始 iterate() 方法输出数字 1~10</span></span><br><span class="line">Stream.iterate(<span class="number">1</span>, i -&gt; i + <span class="number">1</span>).limit(<span class="number">10</span>).forEach(System.out::println);</span><br><span class="line"><span class="comment">// 使用新的 iterate() 重载方法输出数字 1~10</span></span><br><span class="line">Stream.iterate(<span class="number">1</span>, i -&gt; i &lt;= <span class="number">10</span>, i -&gt; i + <span class="number">1</span>).forEach(System.out::println);</span><br></pre></td></tr></table></figure>

<p><code>Optional</code> 类中新增了 <code>ifPresentOrElse()</code>、<code>or()</code> 和 <code>stream()</code> 等方法</p>
<p><code>ifPresentOrElse()</code> 方法接受两个参数 <code>Consumer</code> 和 <code>Runnable</code> ，如果 <code>Optional</code> 不为空调用 <code>Consumer</code> 参数，为空则调用 <code>Runnable</code> 参数。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">ifPresentOrElse</span><span class="params">(Consumer&lt;? <span class="keyword">super</span> T&gt; action, Runnable emptyAction)</span></span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function">Optional&lt;Object&gt; objectOptional </span>= Optional.empty();</span><br><span class="line">objectOptional.ifPresentOrElse(System.out::println, () -&gt; System.out.println(<span class="string">&quot;Empty!!!&quot;</span>));<span class="comment">// Empty!!!</span></span><br></pre></td></tr></table></figure>

<p><code>or()</code> 方法接受一个 <code>Supplier</code> 参数 ，如果 <code>Optional</code> 为空则返回 <code>Supplier</code> 参数指定的 <code>Optional</code> 值。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">public</span> Optional&lt;T&gt; <span class="title">or</span><span class="params">(Supplier&lt;? extends Optional&lt;? extends T&gt;&gt; supplier)</span></span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function">Optional&lt;Object&gt; objectOptional </span>= Optional.empty();</span><br><span class="line">objectOptional.or(() -&gt; Optional.of(<span class="string">&quot;java&quot;</span>)).ifPresent(System.out::println);<span class="comment">//java</span></span><br></pre></td></tr></table></figure>

<h3 id="String-存储结构变更"><a href="#String-存储结构变更" class="headerlink" title="String 存储结构变更"></a>String 存储结构变更</h3><p>JDK 8 及之前的版本，<code>String</code> 一直是用 <code>char[]</code> 存储。在 Java 9 之后，<code>String</code> 的实现改用 <code>byte[]</code> 数组存储字符串。</p>
<h3 id="进程-API"><a href="#进程-API" class="headerlink" title="进程 API"></a>进程 API</h3><p>Java 9 增加了 <code>ProcessHandle</code> 接口，可以对原生进程进行管理，尤其适合于管理长时间运行的进程。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">System.out.println(ProcessHandle.current().pid());</span><br><span class="line">System.out.println(ProcessHandle.current().info());</span><br></pre></td></tr></table></figure>

<p><img src="https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/java-guide-blog/image-20210816104614414.png"></p>
<h3 id="平台日志-API-和服务"><a href="#平台日志-API-和服务" class="headerlink" title="平台日志 API 和服务"></a>平台日志 API 和服务</h3><p>Java 9 允许为 JDK 和应用配置同样的日志实现。新增了 <code>System.LoggerFinder</code> 用来管理 JDK 使 用的日志记录器实现。JVM 在运行时只有一个系统范围的 <code>LoggerFinder</code> 实例。</p>
<p>我们可以通过添加自己的 <code>System.LoggerFinder</code> 实现来让 JDK 和应用使用 SLF4J 等其他日志记录框架。</p>
<h3 id="反应式流-（-Reactive-Streams-）"><a href="#反应式流-（-Reactive-Streams-）" class="headerlink" title="反应式流 （ Reactive Streams ）"></a>反应式流 （ Reactive Streams ）</h3><p>在 Java9 中的 <code>java.util.concurrent.Flow</code> 类中新增了反应式流规范的核心接口 。</p>
<p><code>Flow</code> 中包含了 <code>Flow.Publisher</code>、<code>Flow.Subscriber</code>、<code>Flow.Subscription</code> 和 <code>Flow.Processor</code> 等 4 个核心接口。Java 9 还提供了<code>SubmissionPublisher</code> 作为<code>Flow.Publisher</code> 的一个实现。</p>
<h3 id="变量句柄"><a href="#变量句柄" class="headerlink" title="变量句柄"></a>变量句柄</h3><p>变量句柄是一个变量或一组变量的引用，包括静态域，非静态域，数组元素和堆外数据结构中的组成部分等</p>
<p>变量句柄的含义类似于已有的方法句柄 <code>MethodHandle</code> ，由 Java 类 <code>java.lang.invoke.VarHandle</code> 来表示，可以使用类 <code>java.lang.invoke.MethodHandles.Lookup</code> 中的静态工厂方法来创建 <code>VarHandle</code> 对象。</p>
<p><code>VarHandle</code> 的出现替代了 <code>java.util.concurrent.atomic</code> 和 <code>sun.misc.Unsafe</code> 的部分操作。并且提供了一系列标准的内存屏障操作，用于更加细粒度的控制内存排序。在安全性、可用性、性能上都要优于现有的 API。</p>
<h3 id="改进方法句柄（Method-Handle）"><a href="#改进方法句柄（Method-Handle）" class="headerlink" title="改进方法句柄（Method Handle）"></a>改进方法句柄（Method Handle）</h3><p>方法句柄从 Java7 开始引入，Java9 在类<code>java.lang.invoke.MethodHandles</code> 中新增了更多的静态方法来创建不同类型的方法句柄。</p>
<h3 id="接口私有方法"><a href="#接口私有方法" class="headerlink" title="接口私有方法"></a>接口私有方法</h3><p>Java 9 允许在接口中使用私有方法。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">interface</span> <span class="title">MyInterface</span> </span>&#123;</span><br><span class="line">    <span class="function"><span class="keyword">private</span> <span class="keyword">void</span> <span class="title">methodPrivate</span><span class="params">()</span></span>&#123;</span><br><span class="line"></span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h3 id="Java9-其它新特性"><a href="#Java9-其它新特性" class="headerlink" title="Java9 其它新特性"></a>Java9 其它新特性</h3><ul>
<li><strong>try-with-resources 增强</strong> ：在 try-with-resources 语句中可以使用 effectively-final 变量（什么是 effectively-final 变量，见这篇文章：<a target="_blank" rel="noopener" href="https://ilkinulas.github.io/programming/java/2016/03/27/effectively-final-java.html">《Effectively Final Variables in Java》</a></li>
<li>类 <code>CompletableFuture</code> 中增加了几个新的方法（<code>completeAsync</code> ，<code>orTimeout</code> 等）</li>
<li><strong>Nashorn 引擎的增强</strong> ：Nashorn 从 Java8 开始引入的 JavaScript 引擎，Java9 对 Nashorn 做了些增强，实现了一些 ES6 的新特性（Java 11 中已经被弃用）。</li>
<li><strong>I/O 流的新特性</strong> ：增加了新的方法来读取和复制 <code>InputStream</code> 中包含的数据</li>
<li><strong>改进应用的安全性能</strong> ：Java 9 新增了 4 个 SHA- 3 哈希算法，SHA3-224、SHA3-256、SHA3-384 和 SHA3-512</li>
<li>……</li>
</ul>
<h2 id="Java10"><a href="#Java10" class="headerlink" title="Java10"></a>Java10</h2><p>发布于 2018 年 3 月 20 日，最知名的特性应该是 var 关键字（局部变量类型推断）的引入了，其他还有垃圾收集器改善、GC 改进、性能提升、线程管控等一批新特性</p>
<h3 id="var-局部变量推断"><a href="#var-局部变量推断" class="headerlink" title="var(局部变量推断)"></a>var(局部变量推断)</h3><p>由于太多 Java 开发者希望 Java 中引入局部变量推断，于是 Java 10 的时候它来了，也算是众望所归了！</p>
<p>Java 10 提供了 var 关键字声明局部变量。</p>
<blockquote>
<p>Scala 和 Kotlin 中有 val 关键字 ( <code>final var</code> 组合关键字)，Java10 中并没有引入。</p>
</blockquote>
<p>Java 10 只引入了 var，而</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> id = <span class="number">0</span>;</span><br><span class="line"><span class="keyword">var</span> codefx = <span class="keyword">new</span> URL(<span class="string">&quot;https://mp.weixin.qq.com/&quot;</span>);</span><br><span class="line"><span class="keyword">var</span> list = <span class="keyword">new</span> ArrayList&lt;&gt;();</span><br><span class="line"><span class="keyword">var</span> list = List.of(<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>);</span><br><span class="line"><span class="keyword">var</span> map = <span class="keyword">new</span> HashMap&lt;String, String&gt;();</span><br><span class="line"><span class="keyword">var</span> p = Paths.of(<span class="string">&quot;src/test/java/Java9FeaturesTest.java&quot;</span>);</span><br><span class="line"><span class="keyword">var</span> numbers = List.of(<span class="string">&quot;a&quot;</span>, <span class="string">&quot;b&quot;</span>, <span class="string">&quot;c&quot;</span>);</span><br><span class="line"><span class="keyword">for</span> (<span class="keyword">var</span> n : list)</span><br><span class="line">    System.out.print(n+ <span class="string">&quot; &quot;</span>);</span><br></pre></td></tr></table></figure>

<p>var 关键字只能用于带有构造器的局部变量和 for 循环中。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> count=<span class="keyword">null</span>; <span class="comment">//❌编译不通过，不能声明为 null</span></span><br><span class="line"><span class="keyword">var</span> r = () -&gt; Math.random();<span class="comment">//❌编译不通过,不能声明为 Lambda表达式</span></span><br><span class="line"><span class="keyword">var</span> array = &#123;<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>&#125;;<span class="comment">//❌编译不通过,不能声明数组</span></span><br></pre></td></tr></table></figure>

<p>var 并不会改变 Java 是一门静态类型语言的事实，编译器负责推断出类型。</p>
<p>相关阅读：<a target="_blank" rel="noopener" href="https://zhuanlan.zhihu.com/p/34911982">《Java 10 新特性之局部变量类型推断》</a>。</p>
<h3 id="集合增强-1"><a href="#集合增强-1" class="headerlink" title="集合增强"></a>集合增强</h3><p><code>list</code>，<code>set</code>，<code>map</code> 提供了静态方法<code>copyOf()</code>返回入参集合的一个不可变拷贝。</p>
<p>以下为 JDK 的源码：</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">static</span> &lt;E&gt; <span class="function">List&lt;E&gt; <span class="title">copyOf</span><span class="params">(Collection&lt;? extends E&gt; coll)</span> </span>&#123;</span><br><span class="line">    <span class="keyword">return</span> ImmutableCollections.listCopy(coll);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<p>使用 <code>copyOf()</code> 创建的集合为不可变集合，不能进行添加、删除、替换、 排序等操作，不然会报 <code>java.lang.UnsupportedOperationException</code> 异常。 IDEA 也会有相应的提示。</p>
<p><img src="https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/java-guide-blog/image-20210816154125579.png"></p>
<p><code>java.util.stream.Collectors</code> 中新增了静态方法，用于将流中的元素收集为不可变的集合。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> list = <span class="keyword">new</span> ArrayList&lt;&gt;();</span><br><span class="line">list.stream().collect(Collectors.toUnmodifiableList());</span><br><span class="line">list.stream().collect(Collectors.toUnmodifiableSet());</span><br></pre></td></tr></table></figure>

<h3 id="Optional"><a href="#Optional" class="headerlink" title="Optional"></a>Optional</h3><p>新增了<code>orElseThrow()</code>方法来在没有值时抛出指定的异常。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Optional.ofNullable(cache.getIfPresent(key))</span><br><span class="line">        .orElseThrow(() -&gt; <span class="keyword">new</span> PrestoException(NOT_FOUND, <span class="string">&quot;Missing entry found for key: &quot;</span> + key));</span><br></pre></td></tr></table></figure>

<h3 id="并行全垃圾回收器-G1"><a href="#并行全垃圾回收器-G1" class="headerlink" title="并行全垃圾回收器 G1"></a>并行全垃圾回收器 G1</h3><p>从 Java9 开始 G1 就了默认的垃圾回收器，G1 是以一种低延时的垃圾回收器来设计的，旨在避免进行 Full GC,但是 Java9 的 G1 的 FullGC 依然是使用单线程去完成标记清除算法,这可能会导致垃圾回收期在无法回收内存的时候触发 Full GC。</p>
<p>为了最大限度地减少 Full GC 造成的应用停顿的影响，从 Java10 开始，G1 的 FullGC 改为并行的标记清除算法，同时会使用与年轻代回收和混合回收相同的并行工作线程数量，从而减少了 Full GC 的发生，以带来更好的性能提升、更大的吞吐量。</p>
<h3 id="应用程序类数据共享-扩展-CDS-功能"><a href="#应用程序类数据共享-扩展-CDS-功能" class="headerlink" title="应用程序类数据共享(扩展 CDS 功能)"></a>应用程序类数据共享(扩展 CDS 功能)</h3><p>在 Java 5 中就已经引入了类数据共享机制 (Class Data Sharing，简称 CDS)，允许将一组类预处理为共享归档文件，以便在运行时能够进行内存映射以减少 Java 程序的启动时间，当多个 Java 虚拟机（JVM）共享相同的归档文件时，还可以减少动态内存的占用量，同时减少多个虚拟机在同一个物理或虚拟的机器上运行时的资源占用。CDS 在当时还是 Oracle JDK 的商业特性。</p>
<p>Java 10 在现有的 CDS 功能基础上再次拓展，以允许应用类放置在共享存档中。CDS 特性在原来的 bootstrap 类基础之上，扩展加入了应用类的 CDS 为 (Application Class-Data Sharing，AppCDS) 支持，大大加大了 CDS 的适用范围。其原理为：在启动时记录加载类的过程，写入到文本文件中，再次启动时直接读取此启动文本并加载。设想如果应用环境没有大的变化，启动速度就会得到提升。</p>
<h3 id="Java10-其他新特性"><a href="#Java10-其他新特性" class="headerlink" title="Java10 其他新特性"></a>Java10 其他新特性</h3><ul>
<li><strong>线程-局部管控</strong>：Java 10 中线程管控引入 JVM 安全点的概念，将允许在不运行全局 JVM 安全点的情况下实现线程回调，由线程本身或者 JVM 线程来执行，同时保持线程处于阻塞状态，这种方式使得停止单个线程变成可能，而不是只能启用或停止所有线程</li>
<li><strong>备用存储装置上的堆分配</strong>：Java 10 中将使得 JVM 能够使用适用于不同类型的存储机制的堆，在可选内存设备上进行堆内存分配</li>
<li><strong>统一的垃圾回收接口</strong>：Java 10 中，hotspot/gc 代码实现方面，引入一个干净的 GC 接口，改进不同 GC 源代码的隔离性，多个 GC 之间共享的实现细节代码应该存在于辅助类中。统一垃圾回收接口的主要原因是：让垃圾回收器（GC）这部分代码更加整洁，便于新人上手开发，便于后续排查相关问题。</li>
<li>……</li>
</ul>
<h2 id="Java11"><a href="#Java11" class="headerlink" title="Java11"></a>Java11</h2><p>Java11 于 2018 年 9 月 25 日正式发布，这是很重要的一个版本！Java 11 和 2017 年 9 月份发布的 Java 9 以及 2018 年 3 月份发布的 Java 10 相比，其最大的区别就是：在长期支持(Long-Term-Support)方面，<strong>Oracle 表示会对 Java 11 提供大力支持，这一支持将会持续至 2026 年 9 月。这是据 Java 8 以后支持的首个长期版本。</strong></p>
<p><img src="https://img-blog.csdnimg.cn/20210603202746605.png"></p>
<h3 id="String"><a href="#String" class="headerlink" title="String"></a>String</h3><p>Java 11 增加了一系列的字符串处理方法，如以下所示。</p>
<p><em>Guide：说白点就是多了层封装，JDK 开发组的人没少看市面上常见的工具类框架啊!</em></p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">//判断字符串是否为空</span></span><br><span class="line"><span class="string">&quot; &quot;</span>.isBlank();<span class="comment">//true</span></span><br><span class="line"><span class="comment">//去除字符串首尾空格</span></span><br><span class="line"><span class="string">&quot; Java &quot;</span>.strip();<span class="comment">// &quot;Java&quot;</span></span><br><span class="line"><span class="comment">//去除字符串首部空格</span></span><br><span class="line"><span class="string">&quot; Java &quot;</span>.stripLeading();   <span class="comment">// &quot;Java &quot;</span></span><br><span class="line"><span class="comment">//去除字符串尾部空格</span></span><br><span class="line"><span class="string">&quot; Java &quot;</span>.stripTrailing();  <span class="comment">// &quot; Java&quot;</span></span><br><span class="line"><span class="comment">//重复字符串多少次</span></span><br><span class="line"><span class="string">&quot;Java&quot;</span>.repeat(<span class="number">3</span>);             <span class="comment">// &quot;JavaJavaJava&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment">//返回由行终止符分隔的字符串集合。</span></span><br><span class="line"><span class="string">&quot;A\nB\nC&quot;</span>.lines().count();    <span class="comment">// 3</span></span><br><span class="line"><span class="string">&quot;A\nB\nC&quot;</span>.lines().collect(Collectors.toList());</span><br></pre></td></tr></table></figure>

<h3 id="Optional-1"><a href="#Optional-1" class="headerlink" title="Optional"></a>Optional</h3><p>新增了<code>empty()</code>方法来判断指定的 <code>Optional</code> 对象是否为空。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> op = Optional.empty();</span><br><span class="line">System.out.println(op.isEmpty());<span class="comment">//判断指定的 Optional 对象是否为空</span></span><br></pre></td></tr></table></figure>

<h3 id="ZGC-可伸缩低延迟垃圾收集器"><a href="#ZGC-可伸缩低延迟垃圾收集器" class="headerlink" title="ZGC(可伸缩低延迟垃圾收集器)"></a>ZGC(可伸缩低延迟垃圾收集器)</h3><p><strong>ZGC 即 Z Garbage Collector</strong>，是一个可伸缩的、低延迟的垃圾收集器。</p>
<p>ZGC 主要为了满足如下目标进行设计：</p>
<ul>
<li>GC 停顿时间不超过 10ms</li>
<li>即能处理几百 MB 的小堆，也能处理几个 TB 的大堆</li>
<li>应用吞吐能力不会下降超过 15%（与 G1 回收算法相比）</li>
<li>方便在此基础上引入新的 GC 特性和利用 colored 针以及 Load barriers 优化奠定基础</li>
<li>当前只支持 Linux/x64 位平台</li>
</ul>
<p>ZGC 目前 <strong>处在实验阶段</strong>，只支持 Linux/x64 平台。</p>
<p>与 CMS 中的 ParNew 和 G1 类似，ZGC 也采用标记-复制算法，不过 ZGC 对该算法做了重大改进。</p>
<p>在 ZGC 中出现 Stop The World 的情况会更少！</p>
<p>详情可以看 ： <a target="_blank" rel="noopener" href="https://tech.meituan.com/2020/08/06/new-zgc-practice-in-meituan.html">《新一代垃圾回收器 ZGC 的探索与实践》</a></p>
<h3 id="标准-HTTP-Client-升级"><a href="#标准-HTTP-Client-升级" class="headerlink" title="标准 HTTP Client 升级"></a>标准 HTTP Client 升级</h3><p>Java 11 对 Java 9 中引入并在 Java 10 中进行了更新的 Http Client API 进行了标准化，在前两个版本中进行孵化的同时，Http Client 几乎被完全重写，并且现在完全支持异步非阻塞。</p>
<p>并且，Java11 中，Http Client 的包名由 <code>jdk.incubator.http</code> 改为<code>java.net.http</code>，该 API 通过 <code>CompleteableFuture</code> 提供非阻塞请求和响应语义。使用起来也很简单，如下：</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> request = HttpRequest.newBuilder()</span><br><span class="line">    .uri(URI.create(<span class="string">&quot;https://javastack.cn&quot;</span>))</span><br><span class="line">    .GET()</span><br><span class="line">    .build();</span><br><span class="line"><span class="keyword">var</span> client = HttpClient.newHttpClient();</span><br><span class="line"></span><br><span class="line"><span class="comment">// 同步</span></span><br><span class="line">HttpResponse&lt;String&gt; response = client.send(request, HttpResponse.BodyHandlers.ofString());</span><br><span class="line">System.out.println(response.body());</span><br><span class="line"></span><br><span class="line"><span class="comment">// 异步</span></span><br><span class="line">client.sendAsync(request, HttpResponse.BodyHandlers.ofString())</span><br><span class="line">    .thenApply(HttpResponse::body)</span><br><span class="line">    .thenAccept(System.out::println);</span><br></pre></td></tr></table></figure>

<h3 id="var-Lambda-参数的局部变量语法"><a href="#var-Lambda-参数的局部变量语法" class="headerlink" title="var(Lambda 参数的局部变量语法)"></a>var(Lambda 参数的局部变量语法)</h3><p>从 Java 10 开始，便引入了局部变量类型推断这一关键特性。类型推断允许使用关键字 var 作为局部变量的类型而不是实际类型，编译器根据分配给变量的值推断出类型。</p>
<p>Java 10 中对 var 关键字存在几个限制</p>
<ul>
<li>只能用于局部变量上</li>
<li>声明时必须初始化</li>
<li>不能用作方法参数</li>
<li>不能在 Lambda 表达式中使用</li>
</ul>
<p>Java11 开始允许开发者在 Lambda 表达式中使用 var 进行参数声明。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 下面两者是等价的</span></span><br><span class="line">Consumer&lt;String&gt; consumer = (<span class="keyword">var</span> i) -&gt; System.out.println(i);</span><br><span class="line">Consumer&lt;String&gt; consumer = (String i) -&gt; System.out.println(i);</span><br></pre></td></tr></table></figure>

<h3 id="启动单文件源代码程序"><a href="#启动单文件源代码程序" class="headerlink" title="启动单文件源代码程序"></a>启动单文件源代码程序</h3><p><a target="_blank" rel="noopener" href="https://openjdk.java.net/jeps/330">JEP 330:启动单文件源代码程序（aunch Single-File Source-Code Programs）</a> 可以让我们运行单一文件的 Java 源代码。此功能允许使用 Java 解释器直接执行 Java 源代码。源代码在内存中编译，然后由解释器执行，不需要在磁盘上生成 <code>.class</code> 文件了。</p>
<p>唯一的约束在于所有相关的类必须定义在同一个 Java 文件中。</p>
<p>对于 Java 初学者并希望尝试简单程序的人特别有用，并且能和 jshell 一起使用</p>
<p>一定能程度上增强了使用 Java 来写脚本程序的能力。</p>
<h3 id="Java11-其他新特性"><a href="#Java11-其他新特性" class="headerlink" title="Java11 其他新特性"></a>Java11 其他新特性</h3><ul>
<li><strong>新的垃圾回收器 Epsilon</strong> ：一个完全消极的 GC 实现，分配有限的内存资源，最大限度的降低内存占用和内存吞吐延迟时间</li>
<li><strong>低开销的 Heap Profiling</strong> ：Java 11 中提供一种低开销的 Java 堆分配采样方法，能够得到堆分配的 Java 对象信息，并且能够通过 JVMTI 访问堆信息</li>
<li><strong>TLS1.3 协议</strong> ：Java 11 中包含了传输层安全性（TLS）1.3 规范（RFC 8446）的实现，替换了之前版本中包含的 TLS，包括 TLS 1.2，同时还改进了其他 TLS 功能，例如 OCSP 装订扩展（RFC 6066，RFC 6961），以及会话散列和扩展主密钥扩展（RFC 7627），在安全性和性能方面也做了很多提升</li>
<li><strong>飞行记录器(Java Flight Recorder)</strong> ：飞行记录器之前是商业版 JDK 的一项分析工具，但在 Java 11 中，其代码被包含到公开代码库中，这样所有人都能使用该功能了。</li>
<li>……</li>
</ul>
<h2 id="Java12"><a href="#Java12" class="headerlink" title="Java12"></a>Java12</h2><h3 id="String-1"><a href="#String-1" class="headerlink" title="String"></a>String</h3><p>Java 11 增加了两个的字符串处理方法，如以下所示。</p>
<p><code>indent()</code> 方法可以实现字符串缩进。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">String text = <span class="string">&quot;Java&quot;</span>;</span><br><span class="line"><span class="comment">// 缩进 4 格</span></span><br><span class="line">text = text.indent(<span class="number">4</span>);</span><br><span class="line">System.out.println(text);</span><br><span class="line">text = text.indent(-<span class="number">10</span>);</span><br><span class="line">System.out.println(text);</span><br></pre></td></tr></table></figure>

<p>输出：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">     Java</span><br><span class="line">Java</span><br></pre></td></tr></table></figure>

<p><code>transform()</code> 方法可以用来转变指定字符串。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">String result = <span class="string">&quot;foo&quot;</span>.transform(input -&gt; input + <span class="string">&quot; bar&quot;</span>);</span><br><span class="line">System.out.println(result); <span class="comment">// foo bar</span></span><br></pre></td></tr></table></figure>

<h3 id="文件比较"><a href="#文件比较" class="headerlink" title="文件比较"></a>文件比较</h3><p>Java 12 添加了以下方法来比较两个文件：</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">long</span> <span class="title">mismatch</span><span class="params">(Path path, Path path2)</span> <span class="keyword">throws</span> IOException</span></span><br></pre></td></tr></table></figure>

<p><code>mismatch()</code> 方法用于比较两个文件，并返回第一个不匹配字符的位置，如果文件相同则返回 -1L。</p>
<p>代码示例（两个文件内容相同的情况）：</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">Path filePath1 = Files.createTempFile(<span class="string">&quot;file1&quot;</span>, <span class="string">&quot;.txt&quot;</span>);</span><br><span class="line">Path filePath2 = Files.createTempFile(<span class="string">&quot;file2&quot;</span>, <span class="string">&quot;.txt&quot;</span>);</span><br><span class="line">Files.writeString(filePath1, <span class="string">&quot;Java 12 Article&quot;</span>);</span><br><span class="line">Files.writeString(filePath2, <span class="string">&quot;Java 12 Article&quot;</span>);</span><br><span class="line"></span><br><span class="line"><span class="keyword">long</span> mismatch = Files.mismatch(filePath1, filePath2);</span><br><span class="line">assertEquals(-<span class="number">1</span>, mismatch);</span><br></pre></td></tr></table></figure>

<p>代码示例（两个文件内容不相同的情况）：</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">Path filePath3 = Files.createTempFile(<span class="string">&quot;file3&quot;</span>, <span class="string">&quot;.txt&quot;</span>);</span><br><span class="line">Path filePath4 = Files.createTempFile(<span class="string">&quot;file4&quot;</span>, <span class="string">&quot;.txt&quot;</span>);</span><br><span class="line">Files.writeString(filePath3, <span class="string">&quot;Java 12 Article&quot;</span>);</span><br><span class="line">Files.writeString(filePath4, <span class="string">&quot;Java 12 Tutorial&quot;</span>);</span><br><span class="line"></span><br><span class="line"><span class="keyword">long</span> mismatch = Files.mismatch(filePath3, filePath4);</span><br><span class="line">assertEquals(<span class="number">8</span>, mismatch);</span><br></pre></td></tr></table></figure>

<h3 id="数字格式化工具类"><a href="#数字格式化工具类" class="headerlink" title="数字格式化工具类"></a>数字格式化工具类</h3><p><code>NumberFormat</code> 新增了对复杂的数字进行格式化的支持</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">NumberFormat fmt = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);</span><br><span class="line">String result = fmt.format(<span class="number">1000</span>);</span><br><span class="line"> System.out.println(result); <span class="comment">// 输出为 1K，计算工资是多少K更方便了。。。</span></span><br></pre></td></tr></table></figure>

<h3 id="Shenandoah-GC"><a href="#Shenandoah-GC" class="headerlink" title="Shenandoah GC"></a>Shenandoah GC</h3><p>Redhat 主导开发的 Pauseless GC 实现，主要目标是 99.9% 的暂停小于 10ms，暂停与堆大小无关等</p>
<p>和 Java11 开源的 ZGC 相比（需要升级到 JDK11 才能使用），Shenandoah GC 有稳定的 JDK8u 版本，在 Java8 占据主要市场份额的今天有更大的可落地性。</p>
<h3 id="G1-收集器提升"><a href="#G1-收集器提升" class="headerlink" title="G1 收集器提升"></a>G1 收集器提升</h3><p>Java12 为默认的垃圾收集器 G1 带来了两项更新:</p>
<ul>
<li><strong>可中止的混合收集集合</strong> ：JEP344 的实现，为了达到用户提供的停顿时间目标，JEP 344 通过把要被回收的区域集（混合收集集合）拆分为强制和可选部分，使 G1 垃圾回收器能中止垃圾回收过程。 G1 可以中止可选部分的回收以达到停顿时间目标</li>
<li><strong>及时返回未使用的已分配内存</strong> ：JEP346 的实现，增强 G1 GC，以便在空闲时自动将 Java 堆内存返回给操作系统</li>
</ul>
<h3 id="预览新特性"><a href="#预览新特性" class="headerlink" title="预览新特性"></a>预览新特性</h3><p>作为预览特性加入，需要在<code>javac</code>编译和<code>java</code>运行时增加参数<code>--enable-preview</code> 。</p>
<h4 id="增强-Switch"><a href="#增强-Switch" class="headerlink" title="增强 Switch"></a>增强 Switch</h4><p>传统的 <code>switch</code> 语法存在容易漏写 <code>break</code> 的问题，而且从代码整洁性层面来看，多个 break 本质也是一种重复</p>
<p>Java12 增强了 <code>swtich</code> 表达式，使用类似 lambda 语法条件匹配成功后的执行块，不需要多写 break 。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">switch</span> (day) &#123;</span><br><span class="line">    <span class="keyword">case</span> MONDAY, FRIDAY, SUNDAY -&gt; System.out.println(<span class="number">6</span>);</span><br><span class="line">    <span class="keyword">case</span> TUESDAY                -&gt; System.out.println(<span class="number">7</span>);</span><br><span class="line">    <span class="keyword">case</span> THURSDAY, SATURDAY     -&gt; System.out.println(<span class="number">8</span>);</span><br><span class="line">    <span class="keyword">case</span> WEDNESDAY              -&gt; System.out.println(<span class="number">9</span>);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h4 id="instanceof-模式匹配"><a href="#instanceof-模式匹配" class="headerlink" title="instanceof 模式匹配"></a>instanceof 模式匹配</h4><p><code>instanceof</code> 主要在<strong>类型强转前探测对象的具体类型</strong>。</p>
<p>之前的版本中，我们需要显示地对对象进行类型转换。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">Object obj = <span class="string">&quot;我是字符串&quot;</span>;</span><br><span class="line"><span class="keyword">if</span>(obj <span class="keyword">instanceof</span> String)&#123;</span><br><span class="line">   String str = (String) obj;</span><br><span class="line">	System.out.println(str);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<p>新版的 <code>instanceof</code> 可以在判断是否属于具体的类型同时完成转换。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">Object obj = <span class="string">&quot;我是字符串&quot;</span>;</span><br><span class="line"><span class="keyword">if</span>(obj <span class="keyword">instanceof</span> String str)&#123;</span><br><span class="line">	System.out.println(str);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h2 id="Java13"><a href="#Java13" class="headerlink" title="Java13"></a>Java13</h2><h3 id="增强-ZGC-释放未使用内存"><a href="#增强-ZGC-释放未使用内存" class="headerlink" title="增强 ZGC(释放未使用内存)"></a>增强 ZGC(释放未使用内存)</h3><p>在 Java 11 中是实验性的引入的 ZGC 在实际的使用中存在未能主动将未使用的内存释放给操作系统的问题。</p>
<p>ZGC 堆由一组称为 ZPages 的堆区域组成。在 GC 周期中清空 ZPages 区域时，它们将被释放并返回到页面缓存 <strong>ZPageCache</strong> 中，此缓存中的 ZPages 按最近最少使用（LRU）的顺序，并按照大小进行组织。</p>
<p>在 Java 13 中，ZGC 将向操作系统返回被标识为长时间未使用的页面，这样它们将可以被其他进程重用。</p>
<h3 id="SocketAPI-重构"><a href="#SocketAPI-重构" class="headerlink" title="SocketAPI 重构"></a>SocketAPI 重构</h3><p>Java Socket API 终于迎来了重大更新！</p>
<p>Java 13 将 Socket API 的底层进行了重写， <code>NioSocketImpl</code> 是对 <code>PlainSocketImpl</code> 的直接替代，它使用 <code>java.util.concurrent</code> 包下的锁而不是同步方法。如果要使用旧实现，请使用 <code>-Djdk.net.usePlainSocketImpl=true</code>。</p>
<p>并且，在 Java 13 中是默认使用新的 Socket 实现。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="keyword">final</span> <span class="class"><span class="keyword">class</span> <span class="title">NioSocketImpl</span> <span class="keyword">extends</span> <span class="title">SocketImpl</span> <span class="keyword">implements</span> <span class="title">PlatformSocketImpl</span> </span>&#123;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h3 id="FileSystems"><a href="#FileSystems" class="headerlink" title="FileSystems"></a>FileSystems</h3><p><code>FileSystems</code> 类中添加了以下三种新方法，以便更容易地使用将文件内容视为文件系统的文件系统提供程序：</p>
<ul>
<li><code>newFileSystem(Path)</code></li>
<li><code>newFileSystem(Path, Map&lt;String, ?&gt;)</code></li>
<li><code>newFileSystem(Path, Map&lt;String, ?&gt;, ClassLoader)</code></li>
</ul>
<h3 id="动态-CDS-存档"><a href="#动态-CDS-存档" class="headerlink" title="动态 CDS 存档"></a>动态 CDS 存档</h3><p>Java 13 中对 Java 10 中引入的应用程序类数据共享(AppCDS)进行了进一步的简化、改进和扩展，即：<strong>允许在 Java 应用程序执行结束时动态进行类归档</strong>，具体能够被归档的类包括所有已被加载，但不属于默认基层 CDS 的应用程序类和引用类库中的类。</p>
<p>这提高了应用程序类数据共享（<a target="_blank" rel="noopener" href="https://openjdk.java.net/jeps/310">AppCDS</a>）的可用性。无需用户进行试运行来为每个应用程序创建类列表。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ java -XX:ArchiveClassesAtExit=my_app_cds.jsa -cp my_app.jar</span><br><span class="line">$ java -XX:SharedArchiveFile=my_app_cds.jsa -cp my_app.jar</span><br></pre></td></tr></table></figure>

<h3 id="预览新特性-1"><a href="#预览新特性-1" class="headerlink" title="预览新特性"></a>预览新特性</h3><h4 id="文本块"><a href="#文本块" class="headerlink" title="文本块"></a>文本块</h4><p>解决 Java 定义多行字符串时只能通过换行转义或者换行连接符来变通支持的问题，引入<strong>三重双引号</strong>来定义多行文本。</p>
<p>Java 13 支持两个 <code>&quot;&quot;&quot;</code> 符号中间的任何内容都会被解释为字符串的一部分，包括换行符。</p>
<p>未支持文本块之前的 HTML 写法：</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">String json =<span class="string">&quot;&#123;\n&quot;</span> +</span><br><span class="line">              <span class="string">&quot;   \&quot;name\&quot;:\&quot;mkyong\&quot;,\n&quot;</span> +</span><br><span class="line">              <span class="string">&quot;   \&quot;age\&quot;:38\n&quot;</span> +</span><br><span class="line">              <span class="string">&quot;&#125;\n&quot;</span>;</span><br></pre></td></tr></table></figure>

<p>支持文本块之后的 HTML 写法：</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">String json = <span class="string">&quot;&quot;</span><span class="string">&quot;</span></span><br><span class="line"><span class="string">               &#123;</span></span><br><span class="line"><span class="string">                   &quot;</span>name<span class="string">&quot;:&quot;</span>mkyong<span class="string">&quot;,</span></span><br><span class="line"><span class="string">                   &quot;</span>age<span class="string">&quot;:38</span></span><br><span class="line"><span class="string">               &#125;</span></span><br><span class="line"><span class="string">               &quot;</span><span class="string">&quot;&quot;</span>;</span><br></pre></td></tr></table></figure>

<p>未支持文本块之前的 SQL 写法：</p>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">String query <span class="operator">=</span> &quot;SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`\n&quot; <span class="operator">+</span></span><br><span class="line">               &quot;WHERE `CITY` = &#x27;INDIANAPOLIS&#x27;\n&quot; <span class="operator">+</span></span><br><span class="line">               &quot;ORDER BY `EMP_ID`, `LAST_NAME`;\n&quot;;</span><br></pre></td></tr></table></figure>

<p>支持文本块之后的 SQL 写法：</p>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">String query <span class="operator">=</span> &quot;&quot;&quot;</span><br><span class="line">               SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`</span><br><span class="line">               WHERE `CITY` = &#x27;INDIANAPOLIS&#x27;</span><br><span class="line">               ORDER BY `EMP_ID`, `LAST_NAME`;</span><br><span class="line">               &quot;&quot;&quot;;</span><br></pre></td></tr></table></figure>

<p>另外，<code>String</code> 类新增加了 3 个新的方法来操作文本块：</p>
<ul>
<li><code>formatted(Object... args)</code> ：它类似于 <code>String</code> 的<code>format()</code>方法。添加它是为了支持文本块的格式设置。</li>
<li><code>stripIndent()</code> ：用于去除文本块中每一行开头和结尾的空格。</li>
<li><code>translateEscapes()</code> ：转义序列如 <em>“\\t”</em> 转换为 <em>“\t”</em></li>
</ul>
<p>由于文本块是一项预览功能，可以在未来版本中删除，因此这些新方法被标记为弃用。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@Deprecated(forRemoval=true, since=&quot;13&quot;)</span></span><br><span class="line"><span class="function"><span class="keyword">public</span> String <span class="title">stripIndent</span><span class="params">()</span> </span>&#123;</span><br><span class="line">&#125;</span><br><span class="line"><span class="meta">@Deprecated(forRemoval=true, since=&quot;13&quot;)</span></span><br><span class="line"><span class="function"><span class="keyword">public</span> String <span class="title">formatted</span><span class="params">(Object... args)</span> </span>&#123;</span><br><span class="line"></span><br><span class="line">&#125;</span><br><span class="line"><span class="meta">@Deprecated(forRemoval=true, since=&quot;13&quot;)</span></span><br><span class="line"><span class="function"><span class="keyword">public</span> String <span class="title">translateEscapes</span><span class="params">()</span> </span>&#123;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h4 id="增强-Switch-引入-yield-关键字到-Switch-中"><a href="#增强-Switch-引入-yield-关键字到-Switch-中" class="headerlink" title="增强 Switch(引入 yield 关键字到 Switch 中)"></a>增强 Switch(引入 yield 关键字到 Switch 中)</h4><p><code>Switch</code> 表达式中就多了一个关键字用于跳出 <code>Switch</code> 块的关键字 <code>yield</code>，主要用于返回一个值</p>
<p><code>yield</code>和 <code>return</code> 的区别在于：<code>return</code> 会直接跳出当前循环或者方法，而 <code>yield</code> 只会跳出当前 <code>Switch</code> 块，同时在使用 <code>yield</code> 时，需要有 <code>default</code> 条件</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">private</span> <span class="keyword">static</span> String <span class="title">descLanguage</span><span class="params">(String name)</span> </span>&#123;</span><br><span class="line">       <span class="keyword">return</span> <span class="keyword">switch</span> (name) &#123;</span><br><span class="line">           <span class="keyword">case</span> <span class="string">&quot;Java&quot;</span>: yield <span class="string">&quot;object-oriented, platform independent and secured&quot;</span>;</span><br><span class="line">           <span class="keyword">case</span> <span class="string">&quot;Ruby&quot;</span>: yield <span class="string">&quot;a programmer&#x27;s best friend&quot;</span>;</span><br><span class="line">           <span class="keyword">default</span>: yield name +<span class="string">&quot; is a good language&quot;</span>;</span><br><span class="line">       &#125;;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h2 id="Java14"><a href="#Java14" class="headerlink" title="Java14"></a>Java14</h2><h3 id="空指针异常精准提示"><a href="#空指针异常精准提示" class="headerlink" title="空指针异常精准提示"></a>空指针异常精准提示</h3><p>通过 JVM 参数中添加<code>-XX:+ShowCodeDetailsInExceptionMessages</code>，可以在空指针异常中获取更为详细的调用信息，更快的定位和解决问题。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">a.b.c.i = <span class="number">99</span>; <span class="comment">// 假设这段代码会发生空指针</span></span><br></pre></td></tr></table></figure>

<p>Java 14 之前：</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Exception in thread <span class="string">&quot;main&quot;</span> java.lang.NullPointerException</span><br><span class="line">    at NullPointerExample.main(NullPointerExample.java:<span class="number">5</span>)</span><br></pre></td></tr></table></figure>

<p>Java 14 之后：</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"> <span class="comment">// 增加参数后提示的异常中很明确的告知了哪里为空导致</span></span><br><span class="line">Exception in thread <span class="string">&quot;main&quot;</span> java.lang.NullPointerException:</span><br><span class="line">        Cannot read field <span class="string">&#x27;c&#x27;</span> because <span class="string">&#x27;a.b&#x27;</span> is <span class="keyword">null</span>.</span><br><span class="line">    at Prog.main(Prog.java:<span class="number">5</span>)</span><br></pre></td></tr></table></figure>

<h3 id="switch-的增强-转正"><a href="#switch-的增强-转正" class="headerlink" title="switch 的增强(转正)"></a>switch 的增强(转正)</h3><p>Java12 引入的 switch（预览特性）在 Java14 变为正式版本，不需要增加参数来启用，直接在 JDK14 中就能使用。</p>
<p>Java12 为 switch 表达式引入了类似 lambda 语法条件匹配成功后的执行块，不需要多写 break ，Java13 提供了 <code>yield</code> 来在 block 中返回值。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">String result = <span class="keyword">switch</span> (day) &#123;</span><br><span class="line">            <span class="keyword">case</span> <span class="string">&quot;M&quot;</span>, <span class="string">&quot;W&quot;</span>, <span class="string">&quot;F&quot;</span> -&gt; <span class="string">&quot;MWF&quot;</span>;</span><br><span class="line">            <span class="keyword">case</span> <span class="string">&quot;T&quot;</span>, <span class="string">&quot;TH&quot;</span>, <span class="string">&quot;S&quot;</span> -&gt; <span class="string">&quot;TTS&quot;</span>;</span><br><span class="line">            <span class="keyword">default</span> -&gt; &#123;</span><br><span class="line">                <span class="keyword">if</span>(day.isEmpty())</span><br><span class="line">                    yield <span class="string">&quot;Please insert a valid day.&quot;</span>;</span><br><span class="line">                <span class="keyword">else</span></span><br><span class="line">                    yield <span class="string">&quot;Looks like a Sunday.&quot;</span>;</span><br><span class="line">            &#125;</span><br><span class="line"></span><br><span class="line">        &#125;;</span><br><span class="line">System.out.println(result);</span><br></pre></td></tr></table></figure>

<h3 id="预览新特性-2"><a href="#预览新特性-2" class="headerlink" title="预览新特性"></a>预览新特性</h3><h4 id="record-关键字"><a href="#record-关键字" class="headerlink" title="record 关键字"></a>record 关键字</h4><p><code>record</code> 关键字可以简化 <strong>数据类</strong>（一个 Java 类一旦实例化就不能再修改）的定义方式，使用 <code>record</code> 代替 <code>class</code> 定义的类，只需要声明属性，就可以在获得属性的访问方法，以及 <code>toString()</code>，<code>hashCode()</code>, <code>equals()</code>方法</p>
<p>类似于使用 <code>class</code> 定义类，同时使用了 lombok 插件，并打上了<code>@Getter,@ToString,@EqualsAndHashCode</code>注解</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * 这个类具有两个特征</span></span><br><span class="line"><span class="comment"> * 1. 所有成员属性都是final</span></span><br><span class="line"><span class="comment"> * 2. 全部方法由构造方法，和两个成员属性访问器组成（共三个）</span></span><br><span class="line"><span class="comment"> * 那么这种类就很适合使用record来声明</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">final</span> <span class="class"><span class="keyword">class</span> <span class="title">Rectangle</span> <span class="keyword">implements</span> <span class="title">Shape</span> </span>&#123;</span><br><span class="line">    <span class="keyword">final</span> <span class="keyword">double</span> length;</span><br><span class="line">    <span class="keyword">final</span> <span class="keyword">double</span> width;</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="title">Rectangle</span><span class="params">(<span class="keyword">double</span> length, <span class="keyword">double</span> width)</span> </span>&#123;</span><br><span class="line">        <span class="keyword">this</span>.length = length;</span><br><span class="line">        <span class="keyword">this</span>.width = width;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">double</span> <span class="title">length</span><span class="params">()</span> </span>&#123; <span class="keyword">return</span> length; &#125;</span><br><span class="line">    <span class="function"><span class="keyword">double</span> <span class="title">width</span><span class="params">()</span> </span>&#123; <span class="keyword">return</span> width; &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * 1. 使用record声明的类会自动拥有上面类中的三个方法</span></span><br><span class="line"><span class="comment"> * 2. 在这基础上还附赠了equals()，hashCode()方法以及toString()方法</span></span><br><span class="line"><span class="comment"> * 3. toString方法中包括所有成员属性的字符串表示形式及其名称</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="class"><span class="keyword">record</span> <span class="title">Rectangle</span><span class="params">(<span class="keyword">float</span> length, <span class="keyword">float</span> width)</span> </span>&#123; &#125;</span><br></pre></td></tr></table></figure>

<h4 id="文本块-1"><a href="#文本块-1" class="headerlink" title="文本块"></a>文本块</h4><p>Java14 中，文本块依然是预览特性，不过，其引入了两个新的转义字符：</p>
<ul>
<li><code>\</code> : 表示行尾，不引入换行符</li>
<li><code>\s</code> ：表示单个空格</li>
</ul>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">String str = <span class="string">&quot;凡心所向，素履所往，生如逆旅，一苇以航。&quot;</span>;</span><br><span class="line"></span><br><span class="line">String str2 = <span class="string">&quot;&quot;</span><span class="string">&quot;</span></span><br><span class="line"><span class="string">        凡心所向，素履所往， \</span></span><br><span class="line"><span class="string">        生如逆旅，一苇以航。&quot;</span><span class="string">&quot;&quot;</span>;</span><br><span class="line">System.out.println(str2);<span class="comment">// 凡心所向，素履所往， 生如逆旅，一苇以航。</span></span><br><span class="line">String text = <span class="string">&quot;&quot;</span><span class="string">&quot;</span></span><br><span class="line"><span class="string">        java</span></span><br><span class="line"><span class="string">        c++\sphp</span></span><br><span class="line"><span class="string">        &quot;</span><span class="string">&quot;&quot;</span>;</span><br><span class="line">System.out.println(text);</span><br><span class="line"><span class="comment">//输出：</span></span><br><span class="line">java</span><br><span class="line">c++ php</span><br></pre></td></tr></table></figure>

<h4 id="instanceof-增强"><a href="#instanceof-增强" class="headerlink" title="instanceof 增强"></a>instanceof 增强</h4><p>依然是<strong>预览特性</strong> ，Java 12 新特性中介绍过。</p>
<h3 id="Java14-其他特性"><a href="#Java14-其他特性" class="headerlink" title="Java14 其他特性"></a>Java14 其他特性</h3><ul>
<li>从 Java11 引入的 ZGC 作为继 G1 过后的下一代 GC 算法，从支持 Linux 平台到 Java14 开始支持 MacOS 和 Window（个人感觉是终于可以在日常开发工具中先体验下 ZGC 的效果了，虽然其实 G1 也够用）</li>
<li>移除了 CMS(Concurrent Mark Sweep) 垃圾收集器（功成而退）</li>
<li>新增了 jpackage 工具，标配将应用打成 jar 包外，还支持不同平台的特性包，比如 linux 下的<code>deb</code>和<code>rpm</code>，window 平台下的<code>msi</code>和<code>exe</code></li>
</ul>
<h2 id="Java15"><a href="#Java15" class="headerlink" title="Java15"></a>Java15</h2><h3 id="CharSequence"><a href="#CharSequence" class="headerlink" title="CharSequence"></a>CharSequence</h3><p><code>CharSequence</code> 接口添加了一个默认方法 <code>isEmpty()</code> 来判断字符序列为空，如果是则返回 true。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">interface</span> <span class="title">CharSequence</span> </span>&#123;</span><br><span class="line">  <span class="function"><span class="keyword">default</span> <span class="keyword">boolean</span> <span class="title">isEmpty</span><span class="params">()</span> </span>&#123;</span><br><span class="line">      <span class="keyword">return</span> <span class="keyword">this</span>.length() == <span class="number">0</span>;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h3 id="TreeMap"><a href="#TreeMap" class="headerlink" title="TreeMap"></a>TreeMap</h3><p><code>TreeMap</code> 新引入了下面这些方法：</p>
<ul>
<li><code>putIfAbsent()</code></li>
<li><code>computeIfAbsent()</code></li>
<li><code>computeIfPresent()</code></li>
<li><code>compute()</code></li>
<li><code>merge()</code></li>
</ul>
<h3 id="ZGC-转正"><a href="#ZGC-转正" class="headerlink" title="ZGC(转正)"></a>ZGC(转正)</h3><p>Java11 的时候 ，ZGC 还在试验阶段。</p>
<p>当时，ZGC 的出现让众多 Java 开发者看到了垃圾回收器的另外一种可能，因此备受关注。</p>
<p>经过多个版本的迭代，不断的完善和修复问题，ZGC 在 Java 15 已经可以正式使用了！</p>
<p>不过，默认的垃圾回收器依然是 G1。你可以通过下面的参数启动 ZGC：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ java -XX:+UseZGC className</span><br></pre></td></tr></table></figure>

<h3 id="EdDSA-数字签名算法"><a href="#EdDSA-数字签名算法" class="headerlink" title="EdDSA(数字签名算法)"></a>EdDSA(数字签名算法)</h3><p>新加入了一个安全性和性能都更强的基于 Edwards-Curve Digital Signature Algorithm （EdDSA）实现的数字签名算法。</p>
<p>虽然其性能优于现有的 ECDSA 实现，不过，它并不会完全取代 JDK 中现有的椭圆曲线数字签名算法( ECDSA)。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">KeyPairGenerator kpg = KeyPairGenerator.getInstance(<span class="string">&quot;Ed25519&quot;</span>);</span><br><span class="line">KeyPair kp = kpg.generateKeyPair();</span><br><span class="line"></span><br><span class="line"><span class="keyword">byte</span>[] msg = <span class="string">&quot;test_string&quot;</span>.getBytes(StandardCharsets.UTF_8);</span><br><span class="line"></span><br><span class="line">Signature sig = Signature.getInstance(<span class="string">&quot;Ed25519&quot;</span>);</span><br><span class="line">sig.initSign(kp.getPrivate());</span><br><span class="line">sig.update(msg);</span><br><span class="line"><span class="keyword">byte</span>[] s = sig.sign();</span><br><span class="line"></span><br><span class="line">String encodedString = Base64.getEncoder().encodeToString(s);</span><br><span class="line">System.out.println(encodedString);</span><br></pre></td></tr></table></figure>

<p>输出：</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">0Hc0lxxASZNvS52WsvnncJOH/mlFhnA8Tc6D/k5DtAX5BSsNVjtPF4R4+yMWXVjrvB2mxVXmChIbki6goFBgAg==</span><br></pre></td></tr></table></figure>

<h3 id="文本块-转正"><a href="#文本块-转正" class="headerlink" title="文本块(转正)"></a>文本块(转正)</h3><p>在 Java 15 ，文本块是正式的功能特性了。</p>
<h3 id="隐藏类-Hidden-Classes"><a href="#隐藏类-Hidden-Classes" class="headerlink" title="隐藏类(Hidden Classes)"></a>隐藏类(Hidden Classes)</h3><p>隐藏类是为框架（frameworks）所设计的，隐藏类不能直接被其他类的字节码使用，只能在运行时生成类并通过反射间接使用它们。</p>
<h3 id="预览新特性-3"><a href="#预览新特性-3" class="headerlink" title="预览新特性"></a>预览新特性</h3><h4 id="密封类"><a href="#密封类" class="headerlink" title="密封类"></a>密封类</h4><p>Java 15 对 Java 14 中引入的预览新特性进行了增强，主要是引入了一个新的概念 <strong>密封类（Sealed Classes）。</strong></p>
<p>密封类可以对继承或者实现它们的类进行限制。</p>
<p>比如抽象类 <code>Person</code> 只允许 <code>Employee</code> 和 <code>Manager</code> 继承。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="keyword">abstract</span> sealed <span class="class"><span class="keyword">class</span> <span class="title">Person</span></span></span><br><span class="line"><span class="class">    <span class="title">permits</span> <span class="title">Employee</span>, <span class="title">Manager</span> </span>&#123;</span><br><span class="line"></span><br><span class="line">    <span class="comment">//...</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<p>另外，任何扩展密封类的类本身都必须声明为 <code>sealed</code>、<code>non-sealed</code> 或 <code>final</code>。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="keyword">final</span> <span class="class"><span class="keyword">class</span> <span class="title">Employee</span> <span class="keyword">extends</span> <span class="title">Person</span> </span>&#123;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> non-sealed <span class="class"><span class="keyword">class</span> <span class="title">Manager</span> <span class="keyword">extends</span> <span class="title">Person</span> </span>&#123;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<p><img src="https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/javaguide/image-20210820153955587.png"></p>
<p>如果允许扩展的子类和封闭类在同一个源代码文件里，封闭类可以不使用 permits 语句，Java 编译器将检索源文件，在编译期为封闭类添加上许可的子类。</p>
<h4 id="instanceof-模式匹配-1"><a href="#instanceof-模式匹配-1" class="headerlink" title="instanceof 模式匹配"></a>instanceof 模式匹配</h4><p>Java 15 并没有对此特性进行调整，继续预览特性，主要用于接受更多的使用反馈。</p>
<p>在未来的 Java 版本中，Java 的目标是继续完善 <code>instanceof</code> 模式匹配新特性。</p>
<h3 id="Java15-其他新特性"><a href="#Java15-其他新特性" class="headerlink" title="Java15 其他新特性"></a>Java15 其他新特性</h3><ul>
<li><strong>Nashorn JavaScript 引擎彻底移除</strong> ：Nashorn 从 Java8 开始引入的 JavaScript 引擎，Java9 对 Nashorn 做了些增强，实现了一些 ES6 的新特性。在 Java 11 中就已经被弃用，到了 Java 15 就彻底被删除了。</li>
<li><strong>DatagramSocket API 重构</strong></li>
<li><strong>禁用和废弃偏向锁（Biased Locking）</strong> ： 偏向锁的引入增加了 JVM 的复杂性大于其带来的性能提升。不过，你仍然可以使用 <code>-XX:+UseBiasedLocking</code> 启用偏向锁定，但它会提示 这是一个已弃用的 API。</li>
<li>……</li>
</ul>
<h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><h3 id="关于预览特性"><a href="#关于预览特性" class="headerlink" title="关于预览特性"></a>关于预览特性</h3><p>先贴一段 oracle 官网原文：<code>This is a preview feature, which is a feature whose design, specification, and implementation are complete, but is not permanent, which means that the feature may exist in a different form or not at all in future JDK releases. To compile and run code that contains preview features, you must specify additional command-line options.</code></p>
<p>这是一个预览功能，该功能的设计，规格和实现是完整的，但不是永久性的，这意味着该功能可能以其他形式存在或在将来的 JDK 版本中根本不存在。 要编译和运行包含预览功能的代码，必须指定其他命令行选项。</p>
<p>就以<code>switch</code>的增强为例子，从 Java12 中推出，到 Java13 中将继续增强，直到 Java14 才正式转正进入 JDK 可以放心使用，不用考虑后续 JDK 版本对其的改动或修改</p>
<p>一方面可以看出 JDK 作为标准平台在增加新特性的严谨态度，另一方面个人认为是对于预览特性应该采取审慎使用的态度。特性的设计和实现容易，但是其实际价值依然需要在使用中去验证</p>
<h3 id="JVM-虚拟机优化"><a href="#JVM-虚拟机优化" class="headerlink" title="JVM 虚拟机优化"></a>JVM 虚拟机优化</h3><p>每次 Java 版本的发布都伴随着对 JVM 虚拟机的优化，包括对现有垃圾回收算法的改进，引入新的垃圾回收算法，移除老旧的不再适用于今天的垃圾回收算法等</p>
<p>整体优化的方向是<strong>高效，低时延的垃圾回收表现</strong></p>
<p>对于日常的应用开发者可能比较关注新的语法特性，但是从一个公司角度来说，在考虑是否升级 Java 平台时更加考虑的是<strong>JVM 运行时的提升</strong></p>
<h2 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h2><ul>
<li>JDK Project Overview ： &lt;<a target="_blank" rel="noopener" href="https://openjdk.java.net/projects/jdk/">https://openjdk.java.net/projects/jdk/</a> &gt;</li>
<li>IBM Developer Java9 <a target="_blank" rel="noopener" href="https://www.ibm.com/developerworks/cn/java/the-new-features-of-Java-9/">https://www.ibm.com/developerworks/cn/java/the-new-features-of-Java-9/</a></li>
<li>Guide to Java10 <a target="_blank" rel="noopener" href="https://www.baeldung.com/java-10-overview">https://www.baeldung.com/java-10-overview</a></li>
<li>Java 10 新特性介绍<a target="_blank" rel="noopener" href="https://www.ibm.com/developerworks/cn/java/the-new-features-of-Java-10/index.html">https://www.ibm.com/developerworks/cn/java/the-new-features-of-Java-10/index.html</a></li>
<li>IBM Devloper Java11 <a target="_blank" rel="noopener" href="https://www.ibm.com/developerworks/cn/java/the-new-features-of-Java-11/index.html">https://www.ibm.com/developerworks/cn/java/the-new-features-of-Java-11/index.html</a></li>
<li>Java 11 – Features and Comparison： <a target="_blank" rel="noopener" href="https://www.geeksforgeeks.org/java-11-features-and-comparison/">https://www.geeksforgeeks.org/java-11-features-and-comparison/</a></li>
<li>Oracle Java12 ReleaseNote <a target="_blank" rel="noopener" href="https://www.oracle.com/technetwork/java/javase/12all-relnotes-5211423.html#NewFeature">https://www.oracle.com/technetwork/java/javase/12all-relnotes-5211423.html#NewFeature</a></li>
<li>Oracle Java13 ReleaseNote <a target="_blank" rel="noopener" href="https://www.oracle.com/technetwork/java/javase/13all-relnotes-5461743.html#NewFeature">https://www.oracle.com/technetwork/java/javase/13all-relnotes-5461743.html#NewFeature</a></li>
<li>New Features in Java 12 <a target="_blank" rel="noopener" href="https://www.baeldung.com/java-12-new-features">https://www.baeldung.com/java-12-new-features</a></li>
<li>New Java13 Features <a target="_blank" rel="noopener" href="https://www.baeldung.com/java-13-new-features">https://www.baeldung.com/java-13-new-features</a></li>
<li>Java13 新特性概述 <a target="_blank" rel="noopener" href="https://www.ibm.com/developerworks/cn/java/the-new-features-of-Java-13/index.html">https://www.ibm.com/developerworks/cn/java/the-new-features-of-Java-13/index.html</a></li>
<li>Oracle Java14 record <a target="_blank" rel="noopener" href="https://docs.oracle.com/en/java/javase/14/language/records.html">https://docs.oracle.com/en/java/javase/14/language/records.html</a></li>
<li>java14-features <a target="_blank" rel="noopener" href="https://www.techgeeknext.com/java/java14-features">https://www.techgeeknext.com/java/java14-features</a></li>
<li>Java 14 Features : <a target="_blank" rel="noopener" href="https://www.journaldev.com/37273/java-14-features">https://www.journaldev.com/37273/java-14-features</a></li>
<li>What is new in Java 15: <a target="_blank" rel="noopener" href="https://mkyong.com/java/what-is-new-in-java-15/">https://mkyong.com/java/what-is-new-in-java-15/</a></li>
</ul>

    </article>
    <!-- license -->
    
        <div class="license-wrapper">
            <p>Author：<a href="https://gitee.com/zhang-shuo-fr/hexo.git">Zhang Shuo</a>
            <p>Link：<a href="https://gitee.com/zhang-shuo-fr/hexo.git/2021/12/03/docs/java/new-features/java%E6%96%B0%E7%89%B9%E6%80%A7%E6%80%BB%E7%BB%93/">https://gitee.com/zhang-shuo-fr/hexo.git/2021/12/03/docs/java/new-features/java%E6%96%B0%E7%89%B9%E6%80%A7%E6%80%BB%E7%BB%93/</a>
            <p>Publish date：<a href="https://gitee.com/zhang-shuo-fr/hexo.git/2021/12/03/docs/java/new-features/java%E6%96%B0%E7%89%B9%E6%80%A7%E6%80%BB%E7%BB%93/">December 3rd 2021, 3:29:23 pm</a>
            <p>Update date：<a href="https://gitee.com/zhang-shuo-fr/hexo.git/2021/12/03/docs/java/new-features/java%E6%96%B0%E7%89%B9%E6%80%A7%E6%80%BB%E7%BB%93/">November 29th 2021, 2:15:08 pm</a>
            <p>License：本文采用<a rel="license noopener" target="_blank" href="http://creativecommons.org/licenses/by-nc/4.0/">知识共享署名-非商业性使用 4.0 国际许可协议</a>进行许可</p>
        </div>
    
    <!-- paginator -->
    <ul class="post-paginator">
        <li class="next">
            
                <div class="nextSlogan">Next Post</div>
                <a href="/hexo/2021/12/03/docs/java/tips/jad/" title="">
                    <div class="nextTitle">[Untitled Post]</div>
                </a>
            
        </li>
        <li class="previous">
            
                <div class="prevSlogan">Previous Post</div>
                <a href="/hexo/2021/12/03/docs/java/new-features/java8-tutorial-translate/" title="">
                    <div class="prevTitle">[Untitled Post]</div>
                </a>
            
        </li>
    </ul>
    <!-- comment -->
    
        <div class="post-comment">
            <!-- 来必力 City 版安装代码 -->


            

            

            

            <!-- utteranc评论 -->


            <!-- partial('_partial/comment/changyan') -->
            <!--PC版-->


            
            

        </div>
    
    <!-- timeliness note -->
    <!-- idea from: https://hexo.fluid-dev.com/posts/hexo-injector/#%E6%96%87%E7%AB%A0%E6%97%B6%E6%95%88%E6%80%A7%E6%8F%90%E7%A4%BA -->
    
    <!-- Mathjax -->
    
</main>

                <!-- profile -->
                
            </div>
            <footer class="footer footer-unloaded">
    <!-- social  -->
    
        <div class="social">
            
    
        
            
                <a href="mailto:1991847230@qq.com" class="iconfont-archer email" title=email ></a>
            
        
    
        
            
                <a href="//gitee.com/zhang-shuo-fr" class="iconfont-archer gitee" target="_blank" title=gitee></a>
            
        
    
        
            
                <span class="iconfont-archer wechat" title=wechat>
                    
                    <img class="profile-qr" src="/hexo/assets/example_qr.png" />
                </span>
            
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    
        
    


        </div>
    
    <!-- powered by Hexo  -->
    <div class="copyright">
        <span id="hexo-power">Powered by <a href="https://hexo.io/" target="_blank">Hexo</a></span><span class="iconfont-archer power">&#xe635;</span><span id="theme-info">theme <a href="https://github.com/fi3ework/hexo-theme-archer" target="_blank">Archer</a></span>
    </div>
    <!-- website approve for Chinese user -->
    
    <!-- 不蒜子  -->
    
        <div class="busuanzi-container">
            
             
                <span id="busuanzi_container_site_pv">PV: <span id="busuanzi_value_site_pv"></span> :)</span>
            
        </div>
    	
</footer>

        </div>
        <!-- toc -->
        
            <div class="toc-wrapper toc-wrapper-loding" style=







    top:50vh;

>
                <div class="toc-catalog">
                    <span class="iconfont-archer catalog-icon">&#xe613;</span><span>CATALOG</span>
                </div>
                <ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#%E4%B8%80%E6%96%87%E5%B8%A6%E4%BD%A0%E7%9C%8B%E9%81%8D-JDK9-15-%E7%9A%84%E9%87%8D%E8%A6%81%E6%96%B0%E7%89%B9%E6%80%A7%EF%BC%81"><span class="toc-number">1.</span> <span class="toc-text">一文带你看遍 JDK9~15 的重要新特性！</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#Java9"><span class="toc-number">1.1.</span> <span class="toc-text">Java9</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Java-%E5%B9%B3%E5%8F%B0%E6%A8%A1%E5%9D%97%E7%B3%BB%E7%BB%9F"><span class="toc-number">1.1.1.</span> <span class="toc-text">Java 平台模块系统</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Jshell"><span class="toc-number">1.1.2.</span> <span class="toc-text">Jshell</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E9%9B%86%E5%90%88%E5%A2%9E%E5%BC%BA"><span class="toc-number">1.1.3.</span> <span class="toc-text">集合增强</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Stream-amp-Optional-%E5%A2%9E%E5%BC%BA"><span class="toc-number">1.1.4.</span> <span class="toc-text">Stream &amp; Optional 增强</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#String-%E5%AD%98%E5%82%A8%E7%BB%93%E6%9E%84%E5%8F%98%E6%9B%B4"><span class="toc-number">1.1.5.</span> <span class="toc-text">String 存储结构变更</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E8%BF%9B%E7%A8%8B-API"><span class="toc-number">1.1.6.</span> <span class="toc-text">进程 API</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%B9%B3%E5%8F%B0%E6%97%A5%E5%BF%97-API-%E5%92%8C%E6%9C%8D%E5%8A%A1"><span class="toc-number">1.1.7.</span> <span class="toc-text">平台日志 API 和服务</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%8F%8D%E5%BA%94%E5%BC%8F%E6%B5%81-%EF%BC%88-Reactive-Streams-%EF%BC%89"><span class="toc-number">1.1.8.</span> <span class="toc-text">反应式流 （ Reactive Streams ）</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%8F%98%E9%87%8F%E5%8F%A5%E6%9F%84"><span class="toc-number">1.1.9.</span> <span class="toc-text">变量句柄</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E6%94%B9%E8%BF%9B%E6%96%B9%E6%B3%95%E5%8F%A5%E6%9F%84%EF%BC%88Method-Handle%EF%BC%89"><span class="toc-number">1.1.10.</span> <span class="toc-text">改进方法句柄（Method Handle）</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E6%8E%A5%E5%8F%A3%E7%A7%81%E6%9C%89%E6%96%B9%E6%B3%95"><span class="toc-number">1.1.11.</span> <span class="toc-text">接口私有方法</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Java9-%E5%85%B6%E5%AE%83%E6%96%B0%E7%89%B9%E6%80%A7"><span class="toc-number">1.1.12.</span> <span class="toc-text">Java9 其它新特性</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Java10"><span class="toc-number">1.2.</span> <span class="toc-text">Java10</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#var-%E5%B1%80%E9%83%A8%E5%8F%98%E9%87%8F%E6%8E%A8%E6%96%AD"><span class="toc-number">1.2.1.</span> <span class="toc-text">var(局部变量推断)</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E9%9B%86%E5%90%88%E5%A2%9E%E5%BC%BA-1"><span class="toc-number">1.2.2.</span> <span class="toc-text">集合增强</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Optional"><span class="toc-number">1.2.3.</span> <span class="toc-text">Optional</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%B9%B6%E8%A1%8C%E5%85%A8%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6%E5%99%A8-G1"><span class="toc-number">1.2.4.</span> <span class="toc-text">并行全垃圾回收器 G1</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%B1%BB%E6%95%B0%E6%8D%AE%E5%85%B1%E4%BA%AB-%E6%89%A9%E5%B1%95-CDS-%E5%8A%9F%E8%83%BD"><span class="toc-number">1.2.5.</span> <span class="toc-text">应用程序类数据共享(扩展 CDS 功能)</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Java10-%E5%85%B6%E4%BB%96%E6%96%B0%E7%89%B9%E6%80%A7"><span class="toc-number">1.2.6.</span> <span class="toc-text">Java10 其他新特性</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Java11"><span class="toc-number">1.3.</span> <span class="toc-text">Java11</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#String"><span class="toc-number">1.3.1.</span> <span class="toc-text">String</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Optional-1"><span class="toc-number">1.3.2.</span> <span class="toc-text">Optional</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#ZGC-%E5%8F%AF%E4%BC%B8%E7%BC%A9%E4%BD%8E%E5%BB%B6%E8%BF%9F%E5%9E%83%E5%9C%BE%E6%94%B6%E9%9B%86%E5%99%A8"><span class="toc-number">1.3.3.</span> <span class="toc-text">ZGC(可伸缩低延迟垃圾收集器)</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E6%A0%87%E5%87%86-HTTP-Client-%E5%8D%87%E7%BA%A7"><span class="toc-number">1.3.4.</span> <span class="toc-text">标准 HTTP Client 升级</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#var-Lambda-%E5%8F%82%E6%95%B0%E7%9A%84%E5%B1%80%E9%83%A8%E5%8F%98%E9%87%8F%E8%AF%AD%E6%B3%95"><span class="toc-number">1.3.5.</span> <span class="toc-text">var(Lambda 参数的局部变量语法)</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%90%AF%E5%8A%A8%E5%8D%95%E6%96%87%E4%BB%B6%E6%BA%90%E4%BB%A3%E7%A0%81%E7%A8%8B%E5%BA%8F"><span class="toc-number">1.3.6.</span> <span class="toc-text">启动单文件源代码程序</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Java11-%E5%85%B6%E4%BB%96%E6%96%B0%E7%89%B9%E6%80%A7"><span class="toc-number">1.3.7.</span> <span class="toc-text">Java11 其他新特性</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Java12"><span class="toc-number">1.4.</span> <span class="toc-text">Java12</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#String-1"><span class="toc-number">1.4.1.</span> <span class="toc-text">String</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E6%96%87%E4%BB%B6%E6%AF%94%E8%BE%83"><span class="toc-number">1.4.2.</span> <span class="toc-text">文件比较</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E6%95%B0%E5%AD%97%E6%A0%BC%E5%BC%8F%E5%8C%96%E5%B7%A5%E5%85%B7%E7%B1%BB"><span class="toc-number">1.4.3.</span> <span class="toc-text">数字格式化工具类</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Shenandoah-GC"><span class="toc-number">1.4.4.</span> <span class="toc-text">Shenandoah GC</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#G1-%E6%94%B6%E9%9B%86%E5%99%A8%E6%8F%90%E5%8D%87"><span class="toc-number">1.4.5.</span> <span class="toc-text">G1 收集器提升</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E9%A2%84%E8%A7%88%E6%96%B0%E7%89%B9%E6%80%A7"><span class="toc-number">1.4.6.</span> <span class="toc-text">预览新特性</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#%E5%A2%9E%E5%BC%BA-Switch"><span class="toc-number">1.4.6.1.</span> <span class="toc-text">增强 Switch</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#instanceof-%E6%A8%A1%E5%BC%8F%E5%8C%B9%E9%85%8D"><span class="toc-number">1.4.6.2.</span> <span class="toc-text">instanceof 模式匹配</span></a></li></ol></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Java13"><span class="toc-number">1.5.</span> <span class="toc-text">Java13</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%A2%9E%E5%BC%BA-ZGC-%E9%87%8A%E6%94%BE%E6%9C%AA%E4%BD%BF%E7%94%A8%E5%86%85%E5%AD%98"><span class="toc-number">1.5.1.</span> <span class="toc-text">增强 ZGC(释放未使用内存)</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#SocketAPI-%E9%87%8D%E6%9E%84"><span class="toc-number">1.5.2.</span> <span class="toc-text">SocketAPI 重构</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#FileSystems"><span class="toc-number">1.5.3.</span> <span class="toc-text">FileSystems</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%8A%A8%E6%80%81-CDS-%E5%AD%98%E6%A1%A3"><span class="toc-number">1.5.4.</span> <span class="toc-text">动态 CDS 存档</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E9%A2%84%E8%A7%88%E6%96%B0%E7%89%B9%E6%80%A7-1"><span class="toc-number">1.5.5.</span> <span class="toc-text">预览新特性</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#%E6%96%87%E6%9C%AC%E5%9D%97"><span class="toc-number">1.5.5.1.</span> <span class="toc-text">文本块</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#%E5%A2%9E%E5%BC%BA-Switch-%E5%BC%95%E5%85%A5-yield-%E5%85%B3%E9%94%AE%E5%AD%97%E5%88%B0-Switch-%E4%B8%AD"><span class="toc-number">1.5.5.2.</span> <span class="toc-text">增强 Switch(引入 yield 关键字到 Switch 中)</span></a></li></ol></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Java14"><span class="toc-number">1.6.</span> <span class="toc-text">Java14</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E7%A9%BA%E6%8C%87%E9%92%88%E5%BC%82%E5%B8%B8%E7%B2%BE%E5%87%86%E6%8F%90%E7%A4%BA"><span class="toc-number">1.6.1.</span> <span class="toc-text">空指针异常精准提示</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#switch-%E7%9A%84%E5%A2%9E%E5%BC%BA-%E8%BD%AC%E6%AD%A3"><span class="toc-number">1.6.2.</span> <span class="toc-text">switch 的增强(转正)</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E9%A2%84%E8%A7%88%E6%96%B0%E7%89%B9%E6%80%A7-2"><span class="toc-number">1.6.3.</span> <span class="toc-text">预览新特性</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#record-%E5%85%B3%E9%94%AE%E5%AD%97"><span class="toc-number">1.6.3.1.</span> <span class="toc-text">record 关键字</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#%E6%96%87%E6%9C%AC%E5%9D%97-1"><span class="toc-number">1.6.3.2.</span> <span class="toc-text">文本块</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#instanceof-%E5%A2%9E%E5%BC%BA"><span class="toc-number">1.6.3.3.</span> <span class="toc-text">instanceof 增强</span></a></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Java14-%E5%85%B6%E4%BB%96%E7%89%B9%E6%80%A7"><span class="toc-number">1.6.4.</span> <span class="toc-text">Java14 其他特性</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Java15"><span class="toc-number">1.7.</span> <span class="toc-text">Java15</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#CharSequence"><span class="toc-number">1.7.1.</span> <span class="toc-text">CharSequence</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#TreeMap"><span class="toc-number">1.7.2.</span> <span class="toc-text">TreeMap</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#ZGC-%E8%BD%AC%E6%AD%A3"><span class="toc-number">1.7.3.</span> <span class="toc-text">ZGC(转正)</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#EdDSA-%E6%95%B0%E5%AD%97%E7%AD%BE%E5%90%8D%E7%AE%97%E6%B3%95"><span class="toc-number">1.7.4.</span> <span class="toc-text">EdDSA(数字签名算法)</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E6%96%87%E6%9C%AC%E5%9D%97-%E8%BD%AC%E6%AD%A3"><span class="toc-number">1.7.5.</span> <span class="toc-text">文本块(转正)</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E9%9A%90%E8%97%8F%E7%B1%BB-Hidden-Classes"><span class="toc-number">1.7.6.</span> <span class="toc-text">隐藏类(Hidden Classes)</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E9%A2%84%E8%A7%88%E6%96%B0%E7%89%B9%E6%80%A7-3"><span class="toc-number">1.7.7.</span> <span class="toc-text">预览新特性</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#%E5%AF%86%E5%B0%81%E7%B1%BB"><span class="toc-number">1.7.7.1.</span> <span class="toc-text">密封类</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#instanceof-%E6%A8%A1%E5%BC%8F%E5%8C%B9%E9%85%8D-1"><span class="toc-number">1.7.7.2.</span> <span class="toc-text">instanceof 模式匹配</span></a></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Java15-%E5%85%B6%E4%BB%96%E6%96%B0%E7%89%B9%E6%80%A7"><span class="toc-number">1.7.8.</span> <span class="toc-text">Java15 其他新特性</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%80%BB%E7%BB%93"><span class="toc-number">1.8.</span> <span class="toc-text">总结</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%85%B3%E4%BA%8E%E9%A2%84%E8%A7%88%E7%89%B9%E6%80%A7"><span class="toc-number">1.8.1.</span> <span class="toc-text">关于预览特性</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#JVM-%E8%99%9A%E6%8B%9F%E6%9C%BA%E4%BC%98%E5%8C%96"><span class="toc-number">1.8.2.</span> <span class="toc-text">JVM 虚拟机优化</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99"><span class="toc-number">1.9.</span> <span class="toc-text">参考资料</span></a></li></ol></li></ol>
            </div>
        
        <!-- sidebar -->
        <div class="sidebar sidebar-hide">
    <ul class="sidebar-tabs sidebar-tabs-active-0">
        <li class="sidebar-tab-archives"><span class="iconfont-archer">&#xe67d;</span><span class="tab-name">Archive</span></li>
        <li class="sidebar-tab-tags"><span class="iconfont-archer">&#xe61b;</span><span class="tab-name">Tag</span></li>
        <li class="sidebar-tab-categories"><span class="iconfont-archer">&#xe666;</span><span class="tab-name">Cate</span></li>
    </ul>
    <div class="sidebar-content sidebar-content-show-archive">
        <div class="sidebar-panel-archives">
    <!-- 在 ejs 中将 archive 按照时间排序 -->
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    
    
    
    
    <div class="total-and-search">
        <div class="total-archive">
        Total : 324
        </div>
        <!-- search  -->
        
    </div>
    
    <div class="post-archive">
    
        
            
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/10.2%20%E7%9F%A9%E5%BD%A2%E8%A6%86%E7%9B%96/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/11.%20%E6%97%8B%E8%BD%AC%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%B0%8F%E6%95%B0%E5%AD%97/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/10.3%20%E8%B7%B3%E5%8F%B0%E9%98%B6/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/10.1%20%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/10.4%20%E5%8F%98%E6%80%81%E8%B7%B3%E5%8F%B0%E9%98%B6/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/12.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E8%B7%AF%E5%BE%84/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/13.%20%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%9A%84%E8%BF%90%E5%8A%A8%E8%8C%83%E5%9B%B4/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/14.%20%E5%89%AA%E7%BB%B3%E5%AD%90/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/15.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E4%B8%AD%201%20%E7%9A%84%E4%B8%AA%E6%95%B0/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/16.%20%E6%95%B0%E5%80%BC%E7%9A%84%E6%95%B4%E6%95%B0%E6%AC%A1%E6%96%B9/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/17.%20%E6%89%93%E5%8D%B0%E4%BB%8E%201%20%E5%88%B0%E6%9C%80%E5%A4%A7%E7%9A%84%20n%20%E4%BD%8D%E6%95%B0/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/18.1%20%E5%9C%A8%20O(1)%20%E6%97%B6%E9%97%B4%E5%86%85%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E8%8A%82%E7%82%B9/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/19.%20%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8C%B9%E9%85%8D/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/18.2%20%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E4%B8%AD%E9%87%8D%E5%A4%8D%E7%9A%84%E7%BB%93%E7%82%B9/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/20.%20%E8%A1%A8%E7%A4%BA%E6%95%B0%E5%80%BC%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/21.%20%E8%B0%83%E6%95%B4%E6%95%B0%E7%BB%84%E9%A1%BA%E5%BA%8F%E4%BD%BF%E5%A5%87%E6%95%B0%E4%BD%8D%E4%BA%8E%E5%81%B6%E6%95%B0%E5%89%8D%E9%9D%A2/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/22.%20%E9%93%BE%E8%A1%A8%E4%B8%AD%E5%80%92%E6%95%B0%E7%AC%AC%20K%20%E4%B8%AA%E7%BB%93%E7%82%B9/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/23.%20%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%8E%AF%E7%9A%84%E5%85%A5%E5%8F%A3%E7%BB%93%E7%82%B9/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/24.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/25.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%8E%92%E5%BA%8F%E7%9A%84%E9%93%BE%E8%A1%A8/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/26.%20%E6%A0%91%E7%9A%84%E5%AD%90%E7%BB%93%E6%9E%84/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/27.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%95%9C%E5%83%8F/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/28.%20%E5%AF%B9%E7%A7%B0%E7%9A%84%E4%BA%8C%E5%8F%89%E6%A0%91/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/29.%20%E9%A1%BA%E6%97%B6%E9%92%88%E6%89%93%E5%8D%B0%E7%9F%A9%E9%98%B5/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/3.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E9%87%8D%E5%A4%8D%E7%9A%84%E6%95%B0%E5%AD%97/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/30.%20%E5%8C%85%E5%90%AB%20min%20%E5%87%BD%E6%95%B0%E7%9A%84%E6%A0%88/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/31.%20%E6%A0%88%E7%9A%84%E5%8E%8B%E5%85%A5%E3%80%81%E5%BC%B9%E5%87%BA%E5%BA%8F%E5%88%97/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/32.1%20%E4%BB%8E%E4%B8%8A%E5%BE%80%E4%B8%8B%E6%89%93%E5%8D%B0%E4%BA%8C%E5%8F%89%E6%A0%91/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/32.2%20%E6%8A%8A%E4%BA%8C%E5%8F%89%E6%A0%91%E6%89%93%E5%8D%B0%E6%88%90%E5%A4%9A%E8%A1%8C/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/32.3%20%E6%8C%89%E4%B9%8B%E5%AD%97%E5%BD%A2%E9%A1%BA%E5%BA%8F%E6%89%93%E5%8D%B0%E4%BA%8C%E5%8F%89%E6%A0%91/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/33.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/34.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E5%92%8C%E4%B8%BA%E6%9F%90%E4%B8%80%E5%80%BC%E7%9A%84%E8%B7%AF%E5%BE%84/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/35.%20%E5%A4%8D%E6%9D%82%E9%93%BE%E8%A1%A8%E7%9A%84%E5%A4%8D%E5%88%B6/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/36.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%8E%E5%8F%8C%E5%90%91%E9%93%BE%E8%A1%A8/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/37.%20%E5%BA%8F%E5%88%97%E5%8C%96%E4%BA%8C%E5%8F%89%E6%A0%91/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/39.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0%E8%B6%85%E8%BF%87%E4%B8%80%E5%8D%8A%E7%9A%84%E6%95%B0%E5%AD%97/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/4.%20%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9F%A5%E6%89%BE/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/38.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%8E%92%E5%88%97/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/40.%20%E6%9C%80%E5%B0%8F%E7%9A%84%20K%20%E4%B8%AA%E6%95%B0/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/41.1%20%E6%95%B0%E6%8D%AE%E6%B5%81%E4%B8%AD%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/41.2%20%E5%AD%97%E7%AC%A6%E6%B5%81%E4%B8%AD%E7%AC%AC%E4%B8%80%E4%B8%AA%E4%B8%8D%E9%87%8D%E5%A4%8D%E7%9A%84%E5%AD%97%E7%AC%A6/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/42.%20%E8%BF%9E%E7%BB%AD%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%92%8C/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/43.%20%E4%BB%8E%201%20%E5%88%B0%20n%20%E6%95%B4%E6%95%B0%E4%B8%AD%201%20%E5%87%BA%E7%8E%B0%E7%9A%84%E6%AC%A1%E6%95%B0/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/45.%20%E6%8A%8A%E6%95%B0%E7%BB%84%E6%8E%92%E6%88%90%E6%9C%80%E5%B0%8F%E7%9A%84%E6%95%B0/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/44.%20%E6%95%B0%E5%AD%97%E5%BA%8F%E5%88%97%E4%B8%AD%E7%9A%84%E6%9F%90%E4%B8%80%E4%BD%8D%E6%95%B0%E5%AD%97/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/46.%20%E6%8A%8A%E6%95%B0%E5%AD%97%E7%BF%BB%E8%AF%91%E6%88%90%E5%AD%97%E7%AC%A6%E4%B8%B2/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/47.%20%E7%A4%BC%E7%89%A9%E7%9A%84%E6%9C%80%E5%A4%A7%E4%BB%B7%E5%80%BC/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/48.%20%E6%9C%80%E9%95%BF%E4%B8%8D%E5%90%AB%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/49.%20%E4%B8%91%E6%95%B0/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/5.%20%E6%9B%BF%E6%8D%A2%E7%A9%BA%E6%A0%BC/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/50.%20%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E5%AD%97%E7%AC%A6%E4%BD%8D%E7%BD%AE/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/51.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E9%80%86%E5%BA%8F%E5%AF%B9/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/52.%20%E4%B8%A4%E4%B8%AA%E9%93%BE%E8%A1%A8%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%85%AC%E5%85%B1%E7%BB%93%E7%82%B9/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/54.%20%E4%BA%8C%E5%8F%89%E6%9F%A5%E6%89%BE%E6%A0%91%E7%9A%84%E7%AC%AC%20K%20%E4%B8%AA%E7%BB%93%E7%82%B9/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/53.%20%E6%95%B0%E5%AD%97%E5%9C%A8%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E5%87%BA%E7%8E%B0%E7%9A%84%E6%AC%A1%E6%95%B0/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/55.1%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%B7%B1%E5%BA%A6/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/55.2%20%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/56.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/57.2%20%E5%92%8C%E4%B8%BA%20S%20%E7%9A%84%E8%BF%9E%E7%BB%AD%E6%AD%A3%E6%95%B0%E5%BA%8F%E5%88%97/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/58.1%20%E7%BF%BB%E8%BD%AC%E5%8D%95%E8%AF%8D%E9%A1%BA%E5%BA%8F%E5%88%97/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/57.1%20%E5%92%8C%E4%B8%BA%20S%20%E7%9A%84%E4%B8%A4%E4%B8%AA%E6%95%B0%E5%AD%97/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/58.2%20%E5%B7%A6%E6%97%8B%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/59.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/6.%20%E4%BB%8E%E5%B0%BE%E5%88%B0%E5%A4%B4%E6%89%93%E5%8D%B0%E9%93%BE%E8%A1%A8/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/60.%20n%20%E4%B8%AA%E9%AA%B0%E5%AD%90%E7%9A%84%E7%82%B9%E6%95%B0/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/61.%20%E6%89%91%E5%85%8B%E7%89%8C%E9%A1%BA%E5%AD%90/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/62.%20%E5%9C%86%E5%9C%88%E4%B8%AD%E6%9C%80%E5%90%8E%E5%89%A9%E4%B8%8B%E7%9A%84%E6%95%B0/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/63.%20%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E5%A4%A7%E5%88%A9%E6%B6%A6/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/64.%20%E6%B1%82%201+2+3+...+n/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/66.%20%E6%9E%84%E5%BB%BA%E4%B9%98%E7%A7%AF%E6%95%B0%E7%BB%84/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/65.%20%E4%B8%8D%E7%94%A8%E5%8A%A0%E5%87%8F%E4%B9%98%E9%99%A4%E5%81%9A%E5%8A%A0%E6%B3%95/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/67.%20%E6%8A%8A%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%BD%AC%E6%8D%A2%E6%88%90%E6%95%B4%E6%95%B0/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/68.%20%E6%A0%91%E4%B8%AD%E4%B8%A4%E4%B8%AA%E8%8A%82%E7%82%B9%E7%9A%84%E6%9C%80%E4%BD%8E%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/7.%20%E9%87%8D%E5%BB%BA%E4%BA%8C%E5%8F%89%E6%A0%91/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/8.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E4%B8%8B%E4%B8%80%E4%B8%AA%E7%BB%93%E7%82%B9/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/9.%20%E7%94%A8%E4%B8%A4%E4%B8%AA%E6%A0%88%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Git/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Docker/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E5%88%86%E6%B2%BB/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E5%8F%8C%E6%8C%87%E9%92%88/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E5%AD%97%E7%AC%A6%E4%B8%B2/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E5%93%88%E5%B8%8C%E8%A1%A8/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E5%9B%BE/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E6%8E%92%E5%BA%8F/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E6%95%B0%E5%AD%A6/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E6%95%B0%E7%BB%84%E4%B8%8E%E7%9F%A9%E9%98%B5/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E6%A0%88%E5%92%8C%E9%98%9F%E5%88%97/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E7%9B%AE%E5%BD%95/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E8%B4%AA%E5%BF%83%E6%80%9D%E6%83%B3/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E9%93%BE%E8%A1%A8/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Leetcode%20%E9%A2%98%E8%A7%A3/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Socket/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E4%BB%A3%E7%A0%81%E5%8F%AF%E8%AF%BB%E6%80%A7/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E4%BB%A3%E7%A0%81%E9%A3%8E%E6%A0%BC%E8%A7%84%E8%8C%83/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E5%89%91%E6%8C%87%20Offer%20%E9%A2%98%E8%A7%A3%20-%20%E7%9B%AE%E5%BD%95/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E5%89%91%E6%8C%87%20offer%20%E9%A2%98%E8%A7%A3/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E6%94%BB%E5%87%BB%E6%8A%80%E6%9C%AF/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E6%9E%84%E5%BB%BA%E5%B7%A5%E5%85%B7/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E7%AE%97%E6%B3%95%20-%20%E5%85%B6%E5%AE%83/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E7%AE%97%E6%B3%95%20-%20%E5%B9%B6%E6%9F%A5%E9%9B%86/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E7%AE%97%E6%B3%95%20-%20%E6%A0%88%E5%92%8C%E9%98%9F%E5%88%97/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E7%AE%97%E6%B3%95%20-%20%E7%9B%AE%E5%BD%95/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E7%AE%97%E6%B3%95%20-%20%E7%AE%97%E6%B3%95%E5%88%86%E6%9E%90/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1%E5%9F%BA%E7%A1%80/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E7%AE%97%E6%B3%95/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E7%BC%93%E5%AD%98/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%20-%20%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%20-%20%E6%AD%BB%E9%94%81/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%20-%20%E7%9B%AE%E5%BD%95/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%20-%20%E6%A6%82%E8%BF%B0/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%20-%20%E8%AE%BE%E5%A4%87%E7%AE%A1%E7%90%86/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%20-%20%E9%93%BE%E6%8E%A5/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%20-%20%E4%BC%A0%E8%BE%93%E5%B1%82/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%20-%20%E5%BA%94%E7%94%A8%E5%B1%82/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%20-%20%E6%A6%82%E8%BF%B0/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%20-%20%E7%89%A9%E7%90%86%E5%B1%82/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%20-%20%E7%9B%AE%E5%BD%95/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%20-%20%E7%BD%91%E7%BB%9C%E5%B1%82/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%20-%20%E9%93%BE%E8%B7%AF%E5%B1%82/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> 2021 </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/06</span>
            <a class="archive-post-title" href="/hexo/2021/12/06/%E5%AE%B9%E5%99%A8/netty/">netty</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E9%80%82%E9%85%8D%E5%99%A8/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E9%9B%86%E7%BE%A4/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E6%80%9D%E6%83%B3/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E8%A7%82%E5%AF%9F%E8%80%85/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E8%A7%A3%E9%87%8A%E5%99%A8/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E8%AE%BF%E9%97%AE%E8%80%85/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E8%B4%A3%E4%BB%BB%E9%93%BE/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E8%BF%AD%E4%BB%A3%E5%99%A8/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E7%A9%BA%E5%AF%B9%E8%B1%A1/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E7%AE%80%E5%8D%95%E5%B7%A5%E5%8E%82/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E7%AD%96%E7%95%A5/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E8%A3%85%E9%A5%B0/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E7%8A%B6%E6%80%81/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E7%94%9F%E6%88%90%E5%99%A8/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E7%9B%AE%E5%BD%95/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E7%9B%AE%E5%BD%951/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E5%91%BD%E4%BB%A4/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E5%A4%87%E5%BF%98%E5%BD%95/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E5%A4%96%E8%A7%82/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E5%B7%A5%E5%8E%82%E6%96%B9%E6%B3%95/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E6%8A%BD%E8%B1%A1%E5%B7%A5%E5%8E%82/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E6%A1%A5%E6%8E%A5/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20%20-%20%E5%8D%95%E4%BE%8B/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> 2021 </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E4%B8%AD%E4%BB%8B%E8%80%85/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E4%BB%A3%E7%90%86/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E4%BA%AB%E5%85%83/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20-%20%E5%8E%9F%E5%9E%8B%E6%A8%A1%E5%BC%8F/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Java%20IO/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E6%A0%91/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/MySQL/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Redis/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/SQL%20%E7%BB%83%E4%B9%A0/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/SQL%20%E8%AF%AD%E6%B3%95/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/SQL/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E5%88%86%E5%B8%83%E5%BC%8F/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E7%AE%97%E6%B3%95%20-%20%E6%8E%92%E5%BA%8F/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E7%AE%97%E6%B3%95%20-%20%E7%AC%A6%E5%8F%B7%E8%A1%A8/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%20-%20%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/HTTP/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Java%20%E5%9F%BA%E7%A1%80/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Java%20%E5%AE%B9%E5%99%A8/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Java%20%E8%99%9A%E6%8B%9F%E6%9C%BA/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E6%90%9C%E7%B4%A2/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Linux/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/notes/Java%20%E5%B9%B6%E5%8F%91/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> 2021 </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/readme/">JavaGuide（Java学习&&面试指南）</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/database/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/">数据库基础知识</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/database/%E5%AD%97%E7%AC%A6%E9%9B%86/">字符集</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/high-availability/limit-request/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/high-availability/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/high-availability/%E7%81%BE%E5%A4%87%E8%AE%BE%E8%AE%A1%E5%92%8C%E5%BC%82%E5%9C%B0%E5%A4%9A%E6%B4%BB/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/high-availability/%E8%B6%85%E6%97%B6%E5%92%8C%E9%87%8D%E8%AF%95%E6%9C%BA%E5%88%B6/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/high-availability/%E9%99%8D%E7%BA%A7&%E7%86%94%E6%96%AD/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/high-availability/%E9%9B%86%E7%BE%A4/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/high-availability/%E9%AB%98%E5%8F%AF%E7%94%A8%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/high-performance/%E8%AF%BB%E5%86%99%E5%88%86%E7%A6%BB&%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/high-performance/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/distributed-system/api-gateway/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/distributed-system/distributed-transaction/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/high-quality-technical-articles/readme/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/readme/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/tools/readme/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/cs-basics/network/HTTPS%E4%B8%AD%E7%9A%84TLS/">HTTPS中的TLS</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> 2021 </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/cs-basics/data-structure/%E7%BA%BF%E6%80%A7%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/cs-basics/data-structure/bloom-filter/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/cs-basics/data-structure/%E5%9B%BE/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/cs-basics/data-structure/%E5%A0%86/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/cs-basics/data-structure/%E6%A0%91/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/cs-basics/data-structure/%E7%BA%A2%E9%BB%91%E6%A0%91/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/cs-basics/algorithms/%E5%87%A0%E9%81%93%E5%B8%B8%E8%A7%81%E7%9A%84%E9%93%BE%E8%A1%A8%E7%AE%97%E6%B3%95%E9%A2%98/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/cs-basics/algorithms/%E5%87%A0%E9%81%93%E5%B8%B8%E8%A7%81%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%AE%97%E6%B3%95%E9%A2%98/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/cs-basics/operating-system/shell-intro/">Shell 编程入门</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/high-performance/message-queue/message-queue/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/high-performance/message-queue/rabbitmq-intro/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/database/Redis/3-commonly-used-cache-read-and-write-strategies/">3种常用的缓存读写策略</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/high-performance/message-queue/rocketmq-questions/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/distributed-system/rpc/why-use-rpc/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/database/mysql/how-sql-executed-in-mysql/">一条 SQL 语句在 MySQL 中如何被执行的?</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/database/mysql/mysql-index/">MySQL 索引详解</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/database/mysql/mysql-logs/">MySQL三大日志(binlog、redo log和undo log)详解</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/database/mysql/some-thoughts-on-database-storage-time/">关于数据库中如何存储时间的一点思考</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/distributed-system/%E7%90%86%E8%AE%BA&%E7%AE%97%E6%B3%95/cap&base%E7%90%86%E8%AE%BA/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/database/mysql/transaction-isolation-level/">事务隔离级别(图文详解)</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/distributed-system/%E7%90%86%E8%AE%BA&%E7%AE%97%E6%B3%95/paxos&raft%E7%AE%97%E6%B3%95/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/high-quality-technical-articles/interview/technical-preliminary-preparation/">从面试官和候选者的角度谈如何准备技术初试</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/high-quality-technical-articles/interview/screen-candidates-for-packaging/">包装严重的IT行业，作为面试官，我是如何甄别应聘者的包装程度</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-plugins/camel-case/">Camel Case：命名之间快速切换</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-plugins/code-glance/">CodeGlance：代码微型地图</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-plugins/code-statistic/">Statistic：项目代码统计</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-plugins/git-commit-template/">Git Commit Template：提交代码格式规范</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-plugins/gson-format/">GsonFormat：JSON转对象</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-plugins/idea-themes/">IDEA主题推荐</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-plugins/idea-features-trainer/">IDE Features Trainer：IDEA 交互式教程</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-plugins/improve-code/">IDEA 代码优化插件推荐</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-plugins/interface-beautification/">IDEA 界面美化插件推荐</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-plugins/jclasslib/">jclasslib ：一款IDEA字节码查看神器</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-plugins/maven-helper/">Maven Helper：解决 Maven 依赖冲突问题</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> 2021 </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/tips/jad/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/jvm/jvm-parameters-intro/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/jvm/class-file-structure/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/jvm/class-loading-process/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/jvm/classloader/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/jvm/jdk-monitoring-and-troubleshooting-tools/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/concurrent/%E5%B9%B6%E5%8F%91%E5%AE%B9%E5%99%A8%E6%80%BB%E7%BB%93/">JDK 提供的并发容器总结</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/collection/java%E9%9B%86%E5%90%88%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9/">Java集合使用注意事项总结</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/basis/%E5%8F%8D%E5%B0%84%E6%9C%BA%E5%88%B6%E8%AF%A6%E8%A7%A3/">反射机制详解！</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/basis/io%E6%A8%A1%E5%9E%8B%E8%AF%A6%E8%A7%A3/">IO模型详解</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/basis/java-keyword-summary/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/basis/why-there-only-value-passing-in-java/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/basis/%E4%BB%A3%E7%90%86%E6%A8%A1%E5%BC%8F%E8%AF%A6%E8%A7%A3/">代理详解！静态代理+JDK/CGLIB 动态代理实战</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/basis/BigDecimal%E8%A7%A3%E5%86%B3%E6%B5%AE%E7%82%B9%E6%95%B0%E8%BF%90%E7%AE%97%E7%B2%BE%E5%BA%A6%E4%B8%A2%E5%A4%B1%E9%97%AE%E9%A2%98/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-tips/idea-refractor-intro/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-tips/idea-source-code-reading-skills/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-tips/idea-plug-in-development-intro/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-plugins/translation/">Translation：翻译</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-plugins/others/">其他</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-plugins/rest-devlop/">RestfulToolkit：RESTful Web 服务辅助开发工具</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-plugins/save-actions/">Save Actions：优化文件保存</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-plugins/shortcut-key/">IDEA 快捷键相关插件</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/idea-tutorial/idea-plugins/sequence-diagram/">SequenceDiagram：一键可以生成时序图</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/system-design/basis/RESTfulAPI/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/system-design/basis/naming/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/system-design/framework/netty/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/system-design/security/jwt%E4%BC%98%E7%BC%BA%E7%82%B9%E5%88%86%E6%9E%90%E4%BB%A5%E5%8F%8A%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/system-design/security/readme/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/tools/database/CHINER/">CHINER:干掉 PowerDesigner，这个国产数据库建模工具很强！</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/system-design/security/sso-intro/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/system-design/security/%E6%95%B0%E6%8D%AE%E8%84%B1%E6%95%8F/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/tools/database/DBeaver/">DBeaver:开源数据库管理工具</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/tools/database/DataGrip/">DataGrip:IDEA官方的这个数据库管理神器真香！</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/tools/git/git-intro/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/tools/git/github%E6%8A%80%E5%B7%A7/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/tools/database/screw/">screw:一键生成数据库文档，堪称数据库界的Swagger</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/distributed-system/%E5%88%86%E5%B8%83%E5%BC%8F%E5%8D%8F%E8%B0%83/zookeeper/zookeeper-in-action/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/system-design/framework/spring/SpringBoot%E8%87%AA%E5%8A%A8%E8%A3%85%E9%85%8D%E5%8E%9F%E7%90%86/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/distributed-system/distributed-id/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/system-design/J2EE%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/system-design/%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/cs-basics/network/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E5%B8%B8%E8%A7%81%E9%9D%A2%E8%AF%95%E9%A2%98/">计算机网络常见面试题</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> 2021 </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/cs-basics/algorithms/%E5%89%91%E6%8C%87offer%E9%83%A8%E5%88%86%E7%BC%96%E7%A8%8B%E9%A2%98/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/cs-basics/operating-system/linux-intro/">后端程序员必备的 Linux 基础知识总结</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/high-performance/message-queue/kafka%E7%9F%A5%E8%AF%86%E7%82%B9&%E9%9D%A2%E8%AF%95%E9%A2%98%E6%80%BB%E7%BB%93/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/distributed-system/rpc/dubbo/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/database/mysql/innodb-implementation-of-mvcc/">InnoDB存储引擎对MVCC的实现</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/database/mysql/mysql-high-performance-optimization-specification-recommendations/">MySQL 高性能优化规范建议</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/database/mysql/mysql%E7%9F%A5%E8%AF%86%E7%82%B9&%E9%9D%A2%E8%AF%95%E9%A2%98%E6%80%BB%E7%BB%93/">MySQL知识点&面试题总结</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/high-quality-technical-articles/personal-experience/two-years-of-back-end-develop--experience-in-didi&toutiao/">我在滴滴和头条的两年后端研发工作经验分享</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> 2021 </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/tips/locate-performance-problems/%E6%89%8B%E6%8A%8A%E6%89%8B%E6%95%99%E4%BD%A0%E5%AE%9A%E4%BD%8D%E5%B8%B8%E8%A7%81Java%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/concurrent/%E6%8B%BF%E6%9D%A5%E5%8D%B3%E7%94%A8%E7%9A%84java%E7%BA%BF%E7%A8%8B%E6%B1%A0%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/">拿来即用的Java线程池最佳实践</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/concurrent/atomic%E5%8E%9F%E5%AD%90%E7%B1%BB%E6%80%BB%E7%BB%93/">Atomic 原子类总结</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/concurrent/completablefuture-intro/">CompletableFuture入门</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/concurrent/java%E5%B9%B6%E5%8F%91%E5%9F%BA%E7%A1%80%E5%B8%B8%E8%A7%81%E9%9D%A2%E8%AF%95%E9%A2%98%E6%80%BB%E7%BB%93/">Java 并发常见知识点&面试题总结（基础篇）</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/collection/concurrent-hash-map-source-code/">ConcurrentHashMap源码+底层数据结构分析</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/collection/hashmap-source-code/">HashMap源码+底层数据结构分析</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/system-design/security/basis-of-authority-certification/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/distributed-system/%E5%88%86%E5%B8%83%E5%BC%8F%E5%8D%8F%E8%B0%83/zookeeper/zookeeper-intro/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/system-design/framework/mybatis/mybatis-interview/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/system-design/framework/spring/Spring&SpringBoot%E5%B8%B8%E7%94%A8%E6%B3%A8%E8%A7%A3%E6%80%BB%E7%BB%93/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/system-design/framework/spring/Spring%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E6%80%BB%E7%BB%93/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/system-design/framework/spring/Spring%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E6%80%BB%E7%BB%93/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/cs-basics/network/%E8%B0%A2%E5%B8%8C%E4%BB%81%E8%80%81%E5%B8%88%E7%9A%84%E3%80%8A%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E3%80%8B%E5%86%85%E5%AE%B9%E6%80%BB%E7%BB%93/">谢希仁老师的《计算机网络》内容总结</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/cs-basics/operating-system/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%B8%B8%E8%A7%81%E9%9D%A2%E8%AF%95%E9%A2%98&%E7%9F%A5%E8%AF%86%E7%82%B9%E6%80%BB%E7%BB%93/">操作系统常见面试题总结</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/high-performance/message-queue/rocketmq-intro/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/database/Redis/redis%E7%9F%A5%E8%AF%86%E7%82%B9&%E9%9D%A2%E8%AF%95%E9%A2%98%E6%80%BB%E7%BB%93/">Redis知识点&面试题总结</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/database/mysql/a-thousand-lines-of-mysql-study-notes/">一千行 MySQL 学习笔记</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/high-quality-technical-articles/interview/the-experience-and-thinking-of-an-interview-experienced-by-an-older-programmer/">一位大龄程序员所经历的面试的历炼和思考</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> 2021 </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/new-features/java8-common-new-features/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/new-features/java8-tutorial-translate/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/new-features/java%E6%96%B0%E7%89%B9%E6%80%A7%E6%80%BB%E7%BB%93/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/jvm/jvm-garbage-collection/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/jvm/jvm-intro/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/jvm/memory-area/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/concurrent/threadlocal/">万字解析 ThreadLocal 关键字</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/concurrent/java%E7%BA%BF%E7%A8%8B%E6%B1%A0%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/">Java线程池学习总结</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/concurrent/reentrantlock/">从ReentrantLock的实现看AQS的原理及应用</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/concurrent/aqs%E5%8E%9F%E7%90%86%E4%BB%A5%E5%8F%8Aaqs%E5%90%8C%E6%AD%A5%E7%BB%84%E4%BB%B6%E6%80%BB%E7%BB%93/">AQS 原理以及 AQS 同步组件总结</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/collection/java%E9%9B%86%E5%90%88%E6%A1%86%E6%9E%B6%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86&%E9%9D%A2%E8%AF%95%E9%A2%98%E6%80%BB%E7%BB%93/">[Untitled Post]</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/collection/arraylist-source-code/">ArrayList 源码+扩容机制分析</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/distributed-system/%E5%88%86%E5%B8%83%E5%BC%8F%E5%8D%8F%E8%B0%83/zookeeper/zookeeper-plus/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/system-design/framework/spring/Spring%E4%BA%8B%E5%8A%A1%E6%80%BB%E7%BB%93/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> Invalid date </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">Invalid date</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/system-design/framework/springcloud/springcloud-intro/">[Untitled Post]</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> 2021 </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/concurrent/java%E5%B9%B6%E5%8F%91%E8%BF%9B%E9%98%B6%E5%B8%B8%E8%A7%81%E9%9D%A2%E8%AF%95%E9%A2%98%E6%80%BB%E7%BB%93/">Java 并发常见知识点&面试题总结（进阶篇）</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">12/03</span>
            <a class="archive-post-title" href="/hexo/2021/12/03/docs/java/basis/java%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86%E6%80%BB%E7%BB%93/">Java基础知识&面试题总结</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">11/29</span>
            <a class="archive-post-title" href="/hexo/2021/11/29/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/">MySQL知识点&面试题总结</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">11/26</span>
            <a class="archive-post-title" href="/hexo/2021/11/26/%E6%A1%86%E6%9E%B6/SpringSecurity/">SpringSecurity</a>
        </li>
    
        
            
            
                
                </ul>
            
            <div class="archive-year"> 2019 </div>
            <ul class="year-list">
            
        
        <li class="archive-post-item">
            <span class="archive-post-date">08/13</span>
            <a class="archive-post-title" href="/hexo/2019/08/13/%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%80/BigDecimal/">BigDecimal</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">08/13</span>
            <a class="archive-post-title" href="/hexo/2019/08/13/%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%80/DecimalFormat/">DecimalFormat</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">08/13</span>
            <a class="archive-post-title" href="/hexo/2019/08/13/%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%80/Iterator%E8%BF%AD%E4%BB%A3%E5%99%A8/">Iterator</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">08/13</span>
            <a class="archive-post-title" href="/hexo/2019/08/13/%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%80/Math/">Math</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">08/13</span>
            <a class="archive-post-title" href="/hexo/2019/08/13/%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%80/NumberFormat/">NumberFormat</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">08/13</span>
            <a class="archive-post-title" href="/hexo/2019/08/13/%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%80/Optional/">Optional</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">08/13</span>
            <a class="archive-post-title" href="/hexo/2019/08/13/%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%80/StringBuffer&StringBuilder/">StringBuffer&StringBuilder</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">08/13</span>
            <a class="archive-post-title" href="/hexo/2019/08/13/%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%80/System&Object/">System & Object</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">08/13</span>
            <a class="archive-post-title" href="/hexo/2019/08/13/%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%80/%E5%AD%97%E7%AC%A6%E4%B8%B2&Math&Arrays/">字符串&Math&Arrays</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">08/13</span>
            <a class="archive-post-title" href="/hexo/2019/08/13/%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%80/static/">static#说明：文章标题</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">08/13</span>
            <a class="archive-post-title" href="/hexo/2019/08/13/%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%80/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E6%80%BB%E7%BB%93/">面向对象总结</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">08/13</span>
            <a class="archive-post-title" href="/hexo/2019/08/13/%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%80/%E9%9A%8F%E7%AC%94/">java基础随笔1</a>
        </li>
    
        
        <li class="archive-post-item">
            <span class="archive-post-date">08/13</span>
            <a class="archive-post-title" href="/hexo/2019/08/13/%E5%9F%BA%E7%A1%80/java%E5%9F%BA%E7%A1%80/%E7%AC%94%E8%AE%B01/">初学java</a>
        </li>
    
    </div>
</div>

        <div class="sidebar-panel-tags">
    <div class="sidebar-tags-name">
        
            <span class="sidebar-tag-name" data-tags="BigDecimal">
                <span class="iconfont-archer">&#xe606;</span>
                BigDecimal
            </span>
        
            <span class="sidebar-tag-name" data-tags="Iterator">
                <span class="iconfont-archer">&#xe606;</span>
                Iterator
            </span>
        
            <span class="sidebar-tag-name" data-tags="DecimalFormat">
                <span class="iconfont-archer">&#xe606;</span>
                DecimalFormat
            </span>
        
            <span class="sidebar-tag-name" data-tags="Math#说明：文章标签">
                <span class="iconfont-archer">&#xe606;</span>
                Math#说明：文章标签
            </span>
        
            <span class="sidebar-tag-name" data-tags="NumberFormat">
                <span class="iconfont-archer">&#xe606;</span>
                NumberFormat
            </span>
        
            <span class="sidebar-tag-name" data-tags="java基础，Optional">
                <span class="iconfont-archer">&#xe606;</span>
                java基础，Optional
            </span>
        
            <span class="sidebar-tag-name" data-tags="System，Object">
                <span class="iconfont-archer">&#xe606;</span>
                System，Object
            </span>
        
            <span class="sidebar-tag-name" data-tags="StringBuffer/StringBuilder">
                <span class="iconfont-archer">&#xe606;</span>
                StringBuffer/StringBuilder
            </span>
        
            <span class="sidebar-tag-name" data-tags="static#说明：文章标签">
                <span class="iconfont-archer">&#xe606;</span>
                static#说明：文章标签
            </span>
        
            <span class="sidebar-tag-name" data-tags="字符串&Math&Arrays">
                <span class="iconfont-archer">&#xe606;</span>
                字符串&Math&Arrays
            </span>
        
            <span class="sidebar-tag-name" data-tags="面向对象总结#说明：文章标签">
                <span class="iconfont-archer">&#xe606;</span>
                面向对象总结#说明：文章标签
            </span>
        
            <span class="sidebar-tag-name" data-tags="SpringSecurity">
                <span class="iconfont-archer">&#xe606;</span>
                SpringSecurity
            </span>
        
            <span class="sidebar-tag-name" data-tags="MySQL">
                <span class="iconfont-archer">&#xe606;</span>
                MySQL
            </span>
        
            <span class="sidebar-tag-name" data-tags="面试必备基础">
                <span class="iconfont-archer">&#xe606;</span>
                面试必备基础
            </span>
        
            <span class="sidebar-tag-name" data-tags="java基础随笔1#说明：文章标签">
                <span class="iconfont-archer">&#xe606;</span>
                java基础随笔1#说明：文章标签
            </span>
        
            <span class="sidebar-tag-name" data-tags="初学java">
                <span class="iconfont-archer">&#xe606;</span>
                初学java
            </span>
        
            <span class="sidebar-tag-name" data-tags="数据库基础">
                <span class="iconfont-archer">&#xe606;</span>
                数据库基础
            </span>
        
            <span class="sidebar-tag-name" data-tags="计算机网络">
                <span class="iconfont-archer">&#xe606;</span>
                计算机网络
            </span>
        
            <span class="sidebar-tag-name" data-tags="数据结构">
                <span class="iconfont-archer">&#xe606;</span>
                数据结构
            </span>
        
            <span class="sidebar-tag-name" data-tags="操作系统">
                <span class="iconfont-archer">&#xe606;</span>
                操作系统
            </span>
        
            <span class="sidebar-tag-name" data-tags="Linux">
                <span class="iconfont-archer">&#xe606;</span>
                Linux
            </span>
        
            <span class="sidebar-tag-name" data-tags="Redis">
                <span class="iconfont-archer">&#xe606;</span>
                Redis
            </span>
        
            <span class="sidebar-tag-name" data-tags="面试">
                <span class="iconfont-archer">&#xe606;</span>
                面试
            </span>
        
            <span class="sidebar-tag-name" data-tags="IDEA">
                <span class="iconfont-archer">&#xe606;</span>
                IDEA
            </span>
        
            <span class="sidebar-tag-name" data-tags="IDEA插件">
                <span class="iconfont-archer">&#xe606;</span>
                IDEA插件
            </span>
        
            <span class="sidebar-tag-name" data-tags="代码优化">
                <span class="iconfont-archer">&#xe606;</span>
                代码优化
            </span>
        
            <span class="sidebar-tag-name" data-tags="字节码">
                <span class="iconfont-archer">&#xe606;</span>
                字节码
            </span>
        
            <span class="sidebar-tag-name" data-tags="Maven">
                <span class="iconfont-archer">&#xe606;</span>
                Maven
            </span>
        
            <span class="sidebar-tag-name" data-tags="Java基础">
                <span class="iconfont-archer">&#xe606;</span>
                Java基础
            </span>
        
            <span class="sidebar-tag-name" data-tags="Java并发">
                <span class="iconfont-archer">&#xe606;</span>
                Java并发
            </span>
        
            <span class="sidebar-tag-name" data-tags="Java集合">
                <span class="iconfont-archer">&#xe606;</span>
                Java集合
            </span>
        
            <span class="sidebar-tag-name" data-tags="JVM">
                <span class="iconfont-archer">&#xe606;</span>
                JVM
            </span>
        
            <span class="sidebar-tag-name" data-tags="开发工具">
                <span class="iconfont-archer">&#xe606;</span>
                开发工具
            </span>
        
            <span class="sidebar-tag-name" data-tags="大厂面试">
                <span class="iconfont-archer">&#xe606;</span>
                大厂面试
            </span>
        
            <span class="sidebar-tag-name" data-tags="个人经历">
                <span class="iconfont-archer">&#xe606;</span>
                个人经历
            </span>
        
            <span class="sidebar-tag-name" data-tags="netty">
                <span class="iconfont-archer">&#xe606;</span>
                netty
            </span>
        
    </div>
    <div class="iconfont-archer sidebar-tags-empty">&#xe678;</div>
    <div class="tag-load-fail" style="display: none; color: #ccc; font-size: 0.6rem;">
        缺失模块，请参考主题文档进行安装配置：https://github.com/fi3ework/hexo-theme-archer#%E5%AE%89%E8%A3%85%E4%B8%BB%E9%A2%98
    </div> 
    <div class="sidebar-tags-list"></div>
</div>

        <div class="sidebar-panel-categories">
    <div class="sidebar-categories-name">
    
        <span class="sidebar-category-name" data-categories="java基础">
            <span class="iconfont-archer">&#xe60a;</span>
            java基础
        </span>
    
        <span class="sidebar-category-name" data-categories="SpringBoot">
            <span class="iconfont-archer">&#xe60a;</span>
            SpringBoot
        </span>
    
        <span class="sidebar-category-name" data-categories="MySQL">
            <span class="iconfont-archer">&#xe60a;</span>
            MySQL
        </span>
    
        <span class="sidebar-category-name" data-categories="数据库">
            <span class="iconfont-archer">&#xe60a;</span>
            数据库
        </span>
    
        <span class="sidebar-category-name" data-categories="IDEA指南">
            <span class="iconfont-archer">&#xe60a;</span>
            IDEA指南
        </span>
    
        <span class="sidebar-category-name" data-categories="计算机基础">
            <span class="iconfont-archer">&#xe60a;</span>
            计算机基础
        </span>
    
        <span class="sidebar-category-name" data-categories="技术文章精选集">
            <span class="iconfont-archer">&#xe60a;</span>
            技术文章精选集
        </span>
    
        <span class="sidebar-category-name" data-categories="Java">
            <span class="iconfont-archer">&#xe60a;</span>
            Java
        </span>
    
        <span class="sidebar-category-name" data-categories="容器">
            <span class="iconfont-archer">&#xe60a;</span>
            容器
        </span>
    
    </div>
    <div class="iconfont-archer sidebar-categories-empty">&#xe678;</div>
    <div class="sidebar-categories-list"></div>
</div>

    </div>
</div>

        <!-- site-meta -->
        <script>
    var siteMeta = {
        url: "https://gitee.com/zhang-shuo-fr/hexo.git",
        root: "/hexo/",
        author: "Zhang Shuo"
    }
</script>

        <!-- import experimental options here -->
        <!-- Custom Font -->


        <!-- main func -->
        <script src="/hexo/scripts/main.js?v=20210823"></script>
        <!-- dark mode -->
        <script src="/hexo/scripts/dark.js?v=20210823"></script>
        <!-- fancybox -->
        <script src="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js" defer></script>
        <!-- algolia -->
        
        <!-- busuanzi -->
        
            <script src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" async></script>
        
        <!-- CNZZ -->
        
        <!-- async load share.js -->
        
            <script src="/hexo/scripts/share.js?v=20210823" async></script>
        
        <!-- mermaid -->
        
    </body>
</html>
